Défi problème 5 avec Python: lambda ... j'ai décidé de copier sans

kota9's Challenge 5 problèmes que les ingénieurs logiciels devraient résoudre en une heure. J'ai beaucoup appris. Vous pensez à la récurrence comme ça.

Essayez d'écrire en utilisant lambda

J'ai donc abandonné le défi et décidé de le copier pour une étude ultérieure. Ce n'est pas amusant de simplement le copier, donc c'est juste lambda.

box=lambda *x:x
unbox=lambda x:x[-1]
do=box
switch=unbox

C'est la préparation. Je veux utiliser mon propre commutateur. Depuis que je l'ai fait, j'utilise également mon propre fichier foldl.

foldl=(lambda f,acc,xs:
    switch(
        xs == [] and do( acc )
        or      do( foldl(f, f(acc, xs[0]), xs[1:]) )
    )
)

Avec la fonction f_n qui prend deux entiers ensemble Une fonction ff_n qui prend une liste d'entiers et les attache ensemble. On a l'impression que int et str ne sont pas cool.

f_n=lambda x,y:int(str(x)+str(y))

ff_n=lambda xs:foldl(f_n,0,xs)

Le sujet principal d'ici. J'ai essayé de faire une liste d'entiers pour l'extensibilité.

f_5=(lambda NUMS, n,M:
    (lambda digits=NUMS[:n],
    r_n=range(1,n),
    out=[]:
    (lambda n_digits=ff_n(digits):
        (
        out.append(str(n_digits)) if n_digits==M else None,
        [[ out.append(x + "+" + str(ff_n(digits[-i:n]))) 
        	for x in f_5(NUMS, n-i , M - ff_n(digits[-i:n])) ] for i in r_n ],
        [[ out.append(x + "-" + str(ff_n(digits[-i:n]))) 
        	for x in f_5(NUMS, n-i , M + ff_n(digits[-i:n])) ] for i in r_n ],
        out,
        )[-1]
     )()
     )()
)

ff_5=lambda NUMS, M: f_5(NUMS, len(NUMS), M)

NUMS=range(1,10)
                      
print ff_5(NUMS,100)

l'a fait. Il semble que cela puisse être une liste d'entiers positifs. Si vous essayez de trouver un modèle qui devient 1000 avec une liste de numéros appropriée

>>> ff_5([1,5,4,2,3,7,9,34,57,64,23],1000)
['15-4+2+37+934+57-64+23', '1+5-42-3+7+934+57+64-23']

Vous pouvez ajouter ...

Comme l'original est écrit avec + =, j'étais un peu inquiet de savoir comment accumuler la valeur de retour. Vous pouvez probablement définir [] dans l'argument out par défaut et y ajouter des éléments avec append, non? Quand je l'ai écrit, il semble que cela fonctionne tel quel. C'est presque ...

N'est-ce pas un niveau qui peut être substitué?

Par exemple

a=(lambda :
   (lambda b=[]:
    (b.append(1),
     b.append(2),
     b[0]+b[1],
     )[-1]
    )()
)

Vous pouvez stocker les résultats du calcul dans une liste vide et les utiliser ultérieurement. C'est presque une variable locale, n'est-ce pas? cette. Quand je l'exécute

>>> a()
3

La réaffectation est également possible par pop-up et insertion. Je ne le ferai pas. Ça va être de la merde.

Recommended Posts

Défi problème 5 avec Python: lambda ... j'ai décidé de copier sans
Je veux AWS Lambda avec Python sur Mac!
J'ai essayé de résoudre le problème avec Python Vol.1
Je veux déboguer avec Python
Défiez le problème 5 avec Python: lambda ... N'allez pas profondément dans le one-liner ...
Je voulais résoudre le problème ABC164 A ~ D avec Python
Je voulais résoudre ABC160 avec Python
Je veux analyser les journaux avec Python
Je veux jouer avec aws avec python
Connectez-vous à s3 avec AWS Lambda Python
Je voulais résoudre ABC172 avec Python
Je voulais vraiment copier avec du sélénium
Je veux le faire avec Python lambda Django, mais je vais m'arrêter
Je veux utiliser MATLAB feval avec python
Je voulais résoudre NOMURA Contest 2020 avec Python
Python: j'ai pu récurer en lambda
Je veux faire un jeu avec Python
Je voulais installer Python 3.4.3 avec Homebrew + pyenv
J'ai essayé d'obtenir des données CloudWatch avec Python
J'ai essayé de sortir LLVM IR avec Python
Exemple de notification Slack avec python lambda
Je souhaite utiliser le répertoire temporaire avec Python2
J'ai essayé d'automatiser la fabrication des sushis avec python
#Unresolved Je veux compiler gobject-introspection avec Python3
Exporter un instantané RDS vers S3 avec Lambda (Python)
Je veux résoudre APG4b avec Python (chapitre 2)
Télécharger des fichiers sur Google Drive avec Lambda (Python)
Défiez AtCoder (ABC) 164 avec Python! Un problème ~ C
Je veux écrire dans un fichier avec Python
[Analyse des brevets] J'ai essayé de créer une carte des brevets avec Python sans dépenser d'argent
Essayez de résoudre le livre des défis de programmation avec python3
Je veux gérer l'optimisation avec python et cplex
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de démarrer avec le script python de blender_Part 01
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé de démarrer avec le script python de blender_Partie 02
J'étais accro au grattage avec Selenium (+ Python) en 2020
J'ai essayé d'implémenter le perceptron artificiel avec python
Je veux hériter de l'arrière avec la classe de données python
Je veux travailler avec un robot en python.
Écrire plusieurs enregistrements dans DynamoDB avec Lambda (Python, JavaScript)
Python: peut être répété en lambda
Je veux faire fonctionner un ordinateur quantique avec Python
Je veux lier une variable locale avec lambda
J'ai essayé de résoudre la théorie des nombres entiers d'AOJ avec Python
Le 15e temps réel hors ligne, j'ai essayé de résoudre le problème de l'écriture avec python
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
Je veux pouvoir analyser des données avec Python (partie 3)
Connectez-vous à BigQuery avec Python
J'ai essayé de simuler la propagation de l'infection avec Python
Je souhaite spécifier une autre version de Python avec pyvenv
Exploitez TwitterBot avec Lambda, Python
Je voulais résoudre le concours de programmation Panasonic 2020 avec Python