Code-Golf

Code-Stücke können hier veröffentlicht werden.
Benutzeravatar
__blackjack__
User
Beiträge: 14069
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__)
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
narpfel
User
Beiträge: 691
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: 1560
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: 14069
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Man kann das Leerzeichen vor ``for`` noch weg lassen.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Benutzeravatar
Dennis89
User
Beiträge: 1560
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: 1560
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: 691
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: 1560
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