Problem mit einer Aufgabe
Mit Möglichkeit der Benutzereingabe und zeilenweiser Weiterschaltung per Tastendruck? - Damit käme ich runter bis auf 124 Bytes.BlackJack hat geschrieben:@EyDu: Ich dachte ja eigentlich immer dass es beim Code-Golf um eine möglichst kurze Lösung geht. Habe hier 122 Zeichen für Python 2.x zu bieten.
Ich war noch gar nicht auf Golf eingestellt. Mir ging es eigentlich um eine möglichste konfuse Umsetzung, die aber immer noch sinnvoll ist. Immerhin soll sie dem Fragesteller auch helfen ^^ Entpackt sieht es aus gar nicht mehr so schlimm aus:
Vielleicht spiele ich nachher noch eine Runde mit. 122 hören sich aber schon gar nicht schlecht an.
Sebastian
Code: Alles auswählen
(lambda f, x: f(f, x))(
lambda f, x: (
print("".join(map("<>".__getitem__, x)), end=""),
len(set(x))>1 and (
input(),
f(f, [1] + list(
map(lambda y: y[1] != (not y[0]<=y[1]<=y[2]),
zip(x, x[1:], x[2:]+[x[-1]])))))),
[1]+[__import__("random").choice((0,1)) for _ in range(int(input("?:"))-1)])
Sebastian
Das Leben ist wie ein Tennisball.
@Lunar: So in der Richtung hatte ich es dann auch schon mit Scala versucht und bin zu dem Schluss gekommen, dass ich die Sprache nicht mag. Man muss da dann dauernd den Typ von der Liste überall angeben, und das ist extrem nervig und hässlich.
@numerix: Nee, Mist. Dann hast Du mich geschlagen, mit Abfrage pro Zeile bin ich bei 130. Gibst Du auch ein '?' bei der "Frage" nach der Anzahl der Trompeter aus? Wenn nicht, könnte ich da noch einmal drei Zeichen sparen und käme fast an Dich ran. Wüsste aber nicht wo ich da noch mindestens ein Zeichen rausschlagen sollte.
@numerix: Nee, Mist. Dann hast Du mich geschlagen, mit Abfrage pro Zeile bin ich bei 130. Gibst Du auch ein '?' bei der "Frage" nach der Anzahl der Trompeter aus? Wenn nicht, könnte ich da noch einmal drei Zeichen sparen und käme fast an Dich ran. Wüsste aber nicht wo ich da noch mindestens ein Zeichen rausschlagen sollte.
Grrr, Mist ich hätte testen sollen. Mit Abfrage von Tastatur und ohne Prompt komme ich auf 129. Diesmal auch getestet.
-
- User
- Beiträge: 16
- Registriert: Freitag 19. Februar 2010, 15:08
danke ersmal aber irgendwie blicke ich da nicht so ganz durchEyDu hat geschrieben:
(lambda f, x: f(f, x))(
lambda f, x: (
print("".join(map("<>".__getitem__, x)), end=""),
len(set(x))>1 and (
input(),
f(f, [1] + list(
map(lambda y: y[1] != (not y[0]<=y[1]<=y[2]),
zip(x, x[1:], x[2:]+[x[-1]])))))),
[1]+[__import__("random").choice((0,1)) for _ in range(int(input("?:"))-1)])
--> gibt es auch noch anfängerfreundlichere lösungswege, oder basieren alle auf so eine art
(sollte jetz nich heißen "gebt mir ein leichteres", sondern soll heißen "hab ich noch hoffnung das auf eigene faust hinzukriegen (:D))
Zuletzt geändert von Stephan1993 am Freitag 26. Februar 2010, 11:22, insgesamt 1-mal geändert.
Das dürfte in etwa der Sinn der Sache gewesen sein ...Stephan1993 hat geschrieben:danke ersmal aber irgendwie blicke ich da nicht so ganz durch
Du bist doch schon weit gekommen. Wie es weitergehen kann, habe ich schon beschrieben. Die Aufgabe lässt sich mit einfachen, grundlegenden Python-Elementen lösen.Stephan1993 hat geschrieben:gibt es auch noch anfängerfreundlichere lösungswege, oder basieren alle auf so eine art
(sollte jetz nich heißen "gebt mir ein leichteres", sondern soll heißen "hab ich noch hoffnung das auf eigene faust hinzukriegen (:D))
-
- User
- Beiträge: 16
- Registriert: Freitag 19. Februar 2010, 15:08
mein problem ist ja immernoch bei meinem liebem trompeter 1 und dem 2ten trompeter.... und ehrlich gesagt, hilft mit cofi's code, wie du gesagt hast nicht wirklich dabei auf die sprünge^^
Ich gebe dir mal einen Hinweis:
Ist eigentlich schon fast die Lösung.
Code: Alles auswählen
>>> ">"+"><><<>><".replace("><", "<>")[1:]
'>><><><>'
Das Leben ist wie ein Tennisball.
Stephan1993 hat geschrieben:mein problem ist ja immernoch bei meinem liebem trompeter 1 und dem 2ten trompeter.... und ehrlich gesagt, hilft mit cofi's code, wie du gesagt hast nicht wirklich dabei auf die sprünge^^
numerix hat geschrieben:Zunächst ignorierst du, dass sich der 1. Trompeter nicht umdrehen darf und wendest das replace() einfach auf die ganze Kapelle an. Die neu ausgerichtete Kapelle setzt du dann neu zusammen aus dem 1. Trompeter, der brav nach rechts schaut, und der restliche Kapelle ab dem 2. Trompeter.
Eine richtig "javaesque" Lösung. In Java halt: http://paste.pocoo.org/show/181426/
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Eine Lösung in Factor: http://paste.factorcode.org/paste?id=1484
Ich weiß ich komme etwas spät, musste die Sprache aber erst ausreichend lernen. Hat länger gedauert als erwartet.
Ich weiß ich komme etwas spät, musste die Sprache aber erst ausreichend lernen. Hat länger gedauert als erwartet.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- b.esser-wisser
- User
- Beiträge: 272
- Registriert: Freitag 20. Februar 2009, 14:21
- Wohnort: Bundeshauptstadt B.