Code-Golf

Code-Stücke können hier veröffentlicht werden.
Benutzeravatar
__blackjack__
User
Beiträge: 14311
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Wobei der Punktoperator halt genau das ist: ein Operator — da kann man auch einfach Leerzeichen drum herum setzen:

Code: Alles auswählen

In [135]: "Hallo"  .  upper()
Out[135]: 'HALLO'
Also kann man das auch so schreiben, mit einem Punkt und der gleichen Zeichenanzahl:

Code: Alles auswählen

f=lambda w:sorted(w,key=0 .__eq__)
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
narpfel
User
Beiträge: 707
Registriert: Freitag 20. Oktober 2017, 16:10

Die Version hier gefällt mir noch ein bisschen besser:

Code: Alles auswählen

f=lambda w:sorted(w,key=.0.__eq__)
:mrgreen:

Man kann hier sowohl ein `int` als auch ein `float` benutzen, weil `0 == 0.0`.
Benutzeravatar
Dennis89
User
Beiträge: 1688
Registriert: Freitag 11. Dezember 2020, 15:13

Bekommt ihr das kürzer hin? Jede Zahl einzeln quadrieren, die Ergebnisse zusammen setzen und ein Integer zurück geben.

Code: Alles auswählen

s=lambda n:int("".join(map(lambda x:str(int(x)**2), str(n))))


def main():
    assert s(9119) == 811181


if __name__ == '__main__':
    main()
Grüße
Dennis

Edit: ohne `map` ist's kürzer:

Code: Alles auswählen

s=lambda n:int("".join(str(int(x)**2) for x in str(n)))
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
__blackjack__
User
Beiträge: 14311
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Man kann das Leerzeichen vor ``for`` noch weg lassen.
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan
Benutzeravatar
Dennis89
User
Beiträge: 1688
Registriert: Freitag 11. Dezember 2020, 15:13

Ja Mist, übersehen :)
"When I got the music, I got a place to go" [Rancid, 1993]
Benutzeravatar
Dennis89
User
Beiträge: 1688
Registriert: Freitag 11. Dezember 2020, 15:13

Im letzten Moment noch auf `key` in `sorted` gekommen:

Code: Alles auswählen

h=lambda n:"".join(f"{i[-1]} {i[0]}"for i in[sorted(n.split(),key=int)])




def main():
    assert h("8 3 -5 42 -1 0 0 -9 4 7 4 -4") == "42 -9"
    assert h("42") == "42 42"


if __name__ == '__main__':
    main()
Rückgabe der größten, gefolgt von der kleinsten Zahl, als String mit Leerzeichen getrennt. Wenn nur ein Wer übergeben wird, soll dieser zwei mal zurück gegeben werden.

Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
narpfel
User
Beiträge: 707
Registriert: Freitag 20. Oktober 2017, 16:10

Code: Alles auswählen

lambda n:f"{(x:=sorted(n.split(),key=int))[-1]} {x[0]}"
Benutzeravatar
Dennis89
User
Beiträge: 1688
Registriert: Freitag 11. Dezember 2020, 15:13

Yeah, coole Lösung :)
"When I got the music, I got a place to go" [Rancid, 1993]
Antworten