Herausforderung Problem 5 mit Python: Lambda ... Ich habe mich entschieden, ohne zu kopieren

kota9s Herausforderung 5 Probleme, die Softwareentwickler in einer Stunde lösen sollten. Ich habe viel gelernt. Sie denken über eine solche Wiederholung nach.

Versuchen Sie, mit Lambda zu schreiben

Also gab ich die Herausforderung auf und beschloss, sie für ein späteres Studium zu kopieren. Es macht keinen Spaß, es einfach zu kopieren, also ist es nur Lambda.

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

Es ist Vorbereitung. Ich möchte meinen eigenen Schalter verwenden. Seit ich es geschafft habe, benutze ich auch meine eigene Falte.

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

Mit der Funktion f_n, die zwei ganze Zahlen zusammennimmt Eine Funktion ff_n, die eine Liste von Ganzzahlen aufnimmt und zusammenfügt. Es fühlt sich an, als wären int und str nicht cool.

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

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

Das Hauptthema von hier. Ich habe versucht, eine Liste von Ganzzahlen für die Erweiterbarkeit zu erstellen.

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)

erledigt. Es scheint, dass es sich um eine Liste positiver Ganzzahlen handeln kann. Wenn Sie versuchen, ein Muster zu finden, das mit einer geeigneten Nummernliste 1000 wird

>>> 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']

Sie können anhängen ...

Da das Original mit + = geschrieben ist, war ich ein wenig besorgt darüber, wie der Rückgabewert akkumuliert werden kann. Sie können wahrscheinlich standardmäßig [] im Argument out definieren und Elemente mit append hinzufügen, oder? Als ich es geschrieben habe, scheint es so zu funktionieren, wie es ist. Das ist fast ...

Ist es nicht ein Level, das ersetzt werden kann?

Zum Beispiel

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

Sie können die Berechnungsergebnisse in einer leeren Liste speichern und später verwenden. Es ist fast eine lokale Variable, nicht wahr? Dies. Wenn ich es laufen lasse

>>> a()
3

Eine Neuzuweisung ist auch durch Poppen und Einfügen möglich. Ich werde es nicht tun. Es wird Mist sein.

Recommended Posts

Herausforderung Problem 5 mit Python: Lambda ... Ich habe mich entschieden, ohne zu kopieren
Ich möchte Lambda mit Python auf Mac AWS!
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich möchte mit Python debuggen
Herausforderung Problem 5 mit Python: Lambda ... Gehen Sie nicht tief in den Einzeiler hinein ... Nicht
Ich wollte das ABC164 A ~ D-Problem mit Python lösen
Ich wollte ABC160 mit Python lösen
Ich möchte Protokolle mit Python analysieren
Ich möchte mit aws mit Python spielen
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
Ich wollte ABC172 mit Python lösen
Ich wollte unbedingt mit Selen kopieren
Ich möchte es mit Python Lambda Django machen, aber ich werde aufhören
Ich möchte MATLAB feval mit Python verwenden
Ich wollte den NOMURA Contest 2020 mit Python lösen
Python: Ich konnte in Lambda rekursieren
Ich möchte ein Spiel mit Python machen
Ich wollte Python 3.4.3 mit Homebrew + pyenv installieren
Ich habe versucht, CloudWatch-Daten mit Python abzurufen
Ich habe versucht, LLVM IR mit Python auszugeben
Beispiel für eine Slack-Benachrichtigung mit Python Lambda
Ich möchte Temporäres Verzeichnis mit Python2 verwenden
Ich habe versucht, die Herstellung von Sushi mit Python zu automatisieren
#Unresolved Ich möchte Gobject-Introspection mit Python3 kompilieren
Exportieren Sie den RDS-Snapshot mit Lambda (Python) nach S3.
Ich möchte APG4b mit Python lösen (Kapitel 2)
Laden Sie Dateien mit Lambda (Python) auf Google Drive hoch.
Fordern Sie AtCoder (ABC) 164 mit Python heraus! A ~ C Problem
Ich möchte mit Python in eine Datei schreiben
[Patentanalyse] Ich habe versucht, mit Python eine Patentkarte zu erstellen, ohne Geld auszugeben
Versuchen Sie, das Programmier-Herausforderungsbuch mit Python3 zu lösen
Ich möchte die Optimierung mit Python und CPlex behandeln
Ich habe versucht, Mine Sweeper auf dem Terminal mit Python zu implementieren
Ich habe versucht, mit Blenders Python script_Part 01 zu beginnen
Ich habe versucht, eine CSV-Datei mit Python zu berühren
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, mit Blenders Python script_Part 02 zu beginnen
Ich war süchtig danach, 2020 mit Selen (+ Python) zu kratzen
Ich habe versucht, künstliches Perzeptron mit Python zu implementieren
Ich möchte mit Python-Datenklasse nach hinten erben
Ich möchte mit einem Roboter in Python arbeiten.
Schreiben Sie mit Lambda (Python, JavaScript) mehrere Datensätze in DynamoDB.
Python: Kann in Lambda wiederholt werden
Ich möchte einen Quantencomputer mit Python betreiben
Ich möchte eine lokale Variable mit Lambda binden
Ich habe versucht, AOJs Integer-Theorie mit Python zu lösen
Beim 15. Offline-Echtzeitversuch habe ich versucht, das Problem des Schreibens mit Python zu lösen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
Ich habe fp-Wachstum mit Python versucht
Ich habe versucht, mit Python zu kratzen
Ich möchte Daten mit Python analysieren können (Teil 3)
Stellen Sie mit Python eine Verbindung zu BigQuery her
Ich habe versucht zu simulieren, wie sich die Infektion mit Python ausbreitet
Ich möchte eine andere Version von Python mit pyvenv angeben
Betreiben Sie TwitterBot mit Lambda, Python
Ich wollte den Panasonic Programming Contest 2020 mit Python lösen