Tipps zum Golfen in ///


12

Welche allgemeinen Tipps haben Sie zum Golfen in /// ? Ich suche nach Ideen, die auf Code-Golf-Probleme angewendet werden können und die auch zumindest etwas spezifisch für /// sind (zB "unnötige Leerzeichen entfernen" ist keine Antwort). Tipps für itflabtijtslwi und Lines sind themenbezogen und auch hier gültig.

Bitte posten Sie einen Tipp pro Antwort.

Antworten:


5

Verwenden Sie //als Ersatz

Wenn Sie eine Reihe von Ersetzungen definieren, z.

/a/b//c/d//e/f//g/h//i/j//k/l//m/n//o/p//q/r//s/t//u/v//w/x//y/z/

(65 Bytes). Sie können //als Ersatz verwenden:

/~/\/\///a/b~c/d~e/f~g/h~i/j~k/l~m/n~o/p~q/r~s/t~u/v~w/x~y/z/

(61 Bytes).


4

Unvollständige /// Blöcke werden nicht gedruckt

Beachten Sie, dass diese Codezeile

/Stack/Overflow//x/\//Stack/ignore/DoItyignore

druckt nur Overflow- der Teil von nun /ignorean ist nicht in der Ausgabe enthalten, da ///nur Dinge in seinem dritten Schrägstrich gedruckt werden.

Probieren Sie den unvollständigen Block online aus!

Es wird jedoch vom Ersetzer immer noch berücksichtigt: Wenn wir dort einen Schrägstrich einspritzen, ändern sich die Dinge:

/Stack/Overflow//x/\//Stack/ignore/doitxignore

Versuchen Sie das online!

Die Ausgabe hier ist Overflowdoit, weil das Ersetzen xdurch /eine gültige Syntax.


4

Wenn Sie auf Basis erweitern und Zwischenergebnisse drucken, berücksichtigen Sie frühere Iterationen in zukünftigen

Das klang etwas verworren. Was ich meine, könnte besser mit einer tatsächlichen Antwort beschrieben werden. Diese Herausforderung erfordert diese spezifische Ausgabe:

Steve Ballmer still does not know.
Steve Ballmer still does not know what he did.
Steve Ballmer still does not know what he did wrong.
Steve Ballmer still does not know what he did wrong with mobile.

Eine naive Lösung könnte sein:

/1/Steve Ballmer still does not know//2/ what he did//3/ wrong//4/ with mobile./1.
12.
123.
1234

Beachten Sie, wie das Muster 1, 12, 123... wiederholt? Nun, nicht wenn Sie dies tun:

/1/Steve Ballmer still does not know//2/1 what he did//3/2 wrong//4/3 with mobile/1.
2.
3.
4.

Nochmals vielen Dank an Martin Ender für diesen Hinweis!


2

Verwenden Sie ein Zeichen am Ende des Codes, um Kantenfälle zu behandeln

Wenn Sie einen ///Code haben, der alle bis auf einen Fall behandelt, können Sie ein Zeichen am Rand des Codes verwenden, um den Randfall zu behandeln.

Beispiel: Unär addieren Sie zwei Zahlen, es sei denn, die zweite Zahl ist 7, und geben in diesem Fall nur die erste Zahl aus.

Code, der alle Fälle außer der "zweiten Zahl ist 7" behandelt:

/+//<INPUT 1>+<INPUT 2>

Durch Hinzufügen von a *am Ende des Codes können wir den Randfall behandeln, indem wir ihn durch +0000000*nichts ersetzen (es ist erforderlich, das +einzuschließen, um sicherzustellen, dass die Zahl nicht größer als 7 ist). Stellen Sie sicher, dass am Ende vor der Eingabe Code eingefügt wird, um ihn zu bereinigen.

/+0000000*///+///*//<INPUT 1>+<INPUT 2>*

Probieren Sie es online aus!

Für ein "reales" Beispiel habe ich diesen Trick bei einigen der "Jimmy" -Probleme verwendet:

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.