Diese Idee basiert lose auf der Chat-Nachricht von @ TùxCräftîñg .
Schauen Sie sich die folgende Beispielsequenz an:
INVALID0
, INVALID1
, INVALID2
INVALID3
, INVALID4
...INVALID9
Danach INVALID9
geht es so weiter:
INVALI0
, INVALI1
, INVALI2
, INVALI3
...INVALI9
Und danach INVALI9
ist es so:
INVAL0
, INVAL1
, INVAL2
, INVAL3
...INVAL9
Danach ist INVAL9
es so:
INVA0
, INVA1
, INVA2
, INVA3
, ...INVA9
Beachten Sie, wie wir INVALID
jedes Mal einen Buchstaben aus dem Wort entfernt haben.
Sie wiederholen dies so lange, bis Sie einen einzelnen Buchstaben, das heißt den folgenden, gefunden haben I
:
I0
, I1
, I2
, I3
, I4
...I9
Ihre Aufgabe ist es nun, ein Wort einzugeben und daraus eine Sequenz wie im obigen Beispiel zu erstellen. Ihr Code muss auch mit einzelnen Buchstaben funktionieren. In diesem Fall ist die resultierende Sequenz kürzer.
Sie können ein beliebiges Eingabe- und Ausgabeformat auswählen (wahlweise mit oder ohne Trennzeichen), müssen jedoch angeben, welches Sie ausgewählt haben.
Die Reihenfolge muss genau angegeben sein.
Der kürzeste Code in Byte, der diese Herausforderung erfolgreich abschließt, gewinnt die Herausforderung.
Vollständige Sequenz im obigen Beispiel:
INVALID0, INVALID1, INVALID2, INVALID3, INVALID4, INVALID5, INVALID6, INVALID7, INVALID8, INVALID9, INVALI0, INVALI1, INVALI2, INVALI3, INVALI4, INVALI5, INVALI6, INVALI7, INVALI8, INVALI9, INVAL0, INVAL1, INVAL2, INVAL3, INVAL4, INVAL5, INVAL6, INVAL7, INVAL8, INVAL9, INVA0, INVA1, INVA2, INVA3, INVA4, INVA5, INVA6, INVA7, INVA8, INVA9, INV0, INV1, INV2, INV3, INV4, INV5, INV6, INV7, INV8, INV9, IN0, IN1, IN2, IN3, IN4, IN5, IN6, IN7, IN8, IN9, I0, I1, I2, I3, I4, I5, I6, I7, I8, I9
Andere Beispiele:
Eingabe: MAYBE
(Groß- und Kleinschreibung spielt keine Rolle)
Ausgabe:
MAYBE0, MAYBE1, MAYBE2, MAYBE3, MAYBE4, MAYBE5, MAYBE6, MAYBE7, MAYBE8, MAYBE9, MAYB0, MAYB1, MAYB2, MAYB3, MAYB4, MAYB5, MAYB6, MAYB7, MAYB8, MAYB9, MAY0, MAY1, MAY2, MAY3, MAY4, MAY5, MAY6, MAY7, MAY8, MAY9, MA0, MA1, MA2, MA3, MA4, MA5, MA6, MA7, MA8, MA9, M0, M1, M2, M3, M4, M5, M6, M7, M8, M9
Eingang: AFTER
Ausgabe:
AFTER0, AFTER1, AFTER2, AFTER3, AFTER4, AFTER5, AFTER6, AFTER7, AFTER8, AFTER9, AFTE0, AFTE1, AFTE2, AFTE3, AFTE4, AFTE5, AFTE6, AFTE7, AFTE8, AFTE9, AFT0, AFT1, AFT2, AFT3, AFT4, AFT5, AFT6, AFT7, AFT8, AFT9, AF0, AF1, AF2, AF3, AF4, AF5, AF6, AF7, AF8, AF9, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9
Eingang: WHAT ARE YOU DOING
WHAT ARE YOU DOING0, WHAT ARE YOU DOING1, WHAT ARE YOU DOING2, WHAT ARE YOU DOING3, WHAT ARE YOU DOING4, WHAT ARE YOU DOING5, WHAT ARE YOU DOING6, WHAT ARE YOU DOING7, WHAT ARE YOU DOING8, WHAT ARE YOU DOING9, WHAT ARE YOU DOIN0, WHAT ARE YOU DOIN1, WHAT ARE YOU DOIN2, WHAT ARE YOU DOIN3, WHAT ARE YOU DOIN4, WHAT ARE YOU DOIN5, WHAT ARE YOU DOIN6, WHAT ARE YOU DOIN7, WHAT ARE YOU DOIN8, WHAT ARE YOU DOIN9, WHAT ARE YOU DOI0, WHAT ARE YOU DOI1, WHAT ARE YOU DOI2, WHAT ARE YOU DOI3, WHAT ARE YOU DOI4, WHAT ARE YOU DOI5, WHAT ARE YOU DOI6, WHAT ARE YOU DOI7, WHAT ARE YOU DOI8, WHAT ARE YOU DOI9, WHAT ARE YOU DO0, WHAT ARE YOU DO1, WHAT ARE YOU DO2, WHAT ARE YOU DO3, WHAT ARE YOU DO4, WHAT ARE YOU DO5, WHAT ARE YOU DO6, WHAT ARE YOU DO7, WHAT ARE YOU DO8, WHAT ARE YOU DO9, WHAT ARE YOU D0, WHAT ARE YOU D1, WHAT ARE YOU D2, WHAT ARE YOU D3, WHAT ARE YOU D4, WHAT ARE YOU D5, WHAT ARE YOU D6, WHAT ARE YOU D7, WHAT ARE YOU D8, WHAT ARE YOU D9, WHAT ARE YOU 0, WHAT ARE YOU 1, WHAT ARE YOU 2, WHAT ARE YOU 3, WHAT ARE YOU 4, WHAT ARE YOU 5, WHAT ARE YOU 6, WHAT ARE YOU 7, WHAT ARE YOU 8, WHAT ARE YOU 9, WHAT ARE YOU0, WHAT ARE YOU1, WHAT ARE YOU2, WHAT ARE YOU3, WHAT ARE YOU4, WHAT ARE YOU5, WHAT ARE YOU6, WHAT ARE YOU7, WHAT ARE YOU8, WHAT ARE YOU9, WHAT ARE YO0, WHAT ARE YO1, WHAT ARE YO2, WHAT ARE YO3, WHAT ARE YO4, WHAT ARE YO5, WHAT ARE YO6, WHAT ARE YO7, WHAT ARE YO8, WHAT ARE YO9, WHAT ARE Y0, WHAT ARE Y1, WHAT ARE Y2, WHAT ARE Y3, WHAT ARE Y4, WHAT ARE Y5, WHAT ARE Y6, WHAT ARE Y7, WHAT ARE Y8, WHAT ARE Y9, WHAT ARE 0, WHAT ARE 1, WHAT ARE 2, WHAT ARE 3, WHAT ARE 4, WHAT ARE 5, WHAT ARE 6, WHAT ARE 7, WHAT ARE 8, WHAT ARE 9, WHAT ARE0, WHAT ARE1, WHAT ARE2, WHAT ARE3, WHAT ARE4, WHAT ARE5, WHAT ARE6, WHAT ARE7, WHAT ARE8, WHAT ARE9, WHAT AR0, WHAT AR1, WHAT AR2, WHAT AR3, WHAT AR4, WHAT AR5, WHAT AR6, WHAT AR7, WHAT AR8, WHAT AR9, WHAT A0, WHAT A1, WHAT A2, WHAT A3, WHAT A4, WHAT A5, WHAT A6, WHAT A7, WHAT A8, WHAT A9, WHAT 0, WHAT 1, WHAT 2, WHAT 3, WHAT 4, WHAT 5, WHAT 6, WHAT 7, WHAT 8, WHAT 9, WHAT0, WHAT1, WHAT2, WHAT3, WHAT4, WHAT5, WHAT6, WHAT7, WHAT8, WHAT9, WHA0, WHA1, WHA2, WHA3, WHA4, WHA5, WHA6, WHA7, WHA8, WHA9, WH0, WH1, WH2, WH3, WH4, WH5, WH6, WH7, WH8, WH9, W0, W1, W2, W3, W4, W5, W6, W7, W8, W9
Bestenliste
quelle
INVALID0INVALID1INVALID2
) ein gültiges Ausgabeformat?Antworten:
Gelee , 7 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
05AB1E ,
108 BytesErläuterung
Probieren Sie es online!
2 Bytes gespart dank Adnan
quelle
.p
ist gleichbedeutend mitŒ¹g£
:).Javascript (ES6),
53.47Byte6 Bytes gespart dank Peanut & Neil
Ausgabe: Alle Wörter als einzelne Zeichenfolge ohne Trennzeichen.
Beispiel
quelle
s&&
anstelle vons?
... verwenden:''
?+''
Teil aus dem letzten von mir veröffentlichten Code entfernen . Probieren Sie es hier aus!Perl, 29 Bytes
Beinhaltet +1 für
-n
Mit Eingabe auf STDIN ausführen:
Nur der Code:
quelle
^
... Es sieht so aus, als ob es den gleichen Job macht(*FAIL)
, aber ich verstehe nicht warum. Könntest du erklären?^
dass das Match fehlschlägt, was den regulären Ausdruck davor zwingt, einen Rückzieher zu machen^
... Ich meine, mit Ihrem Beispiel, warum,/
funktioniert es nicht, aber doch^/
?^
ist jenseits des aktuellen Verständnisses des Optimierers. Eines der beiden Verhaltensweisen könnte sich in Zukunft ändern.Haskell,
4743 BytesAnwendungsbeispiel:
f "IN"
->["IN0","IN1","IN2","IN3","IN4","IN5","IN6","IN7","IN8","IN9","I0","I1","I2","I3","I4","I5","I6","I7","I8","I9"]
.Einfacher rekursiver Ansatz. Fügen Sie jede Ziffer an das Wort an und fügen Sie einen rekursiven Aufruf hinzu, wobei der letzte Buchstabe entfernt wird.
quelle
Pyth, 9 Bytes
Ein Programm, das die Eingabe einer in Anführungszeichen gesetzten Zeichenfolge in STDIN übernimmt und eine Liste von Zeichenfolgen druckt.
Probieren Sie es online aus
Wie es funktioniert
quelle
Pip ,
1211 BytesNimmt das Wort als cmdline-Argument. Ausgänge ohne Trennzeichen.
Probieren Sie es online!
Erläuterung:
quelle
V , 20 Bytes
Probieren Sie es online!
Da dies nicht druckbare Zeichen enthält, ist hier das lesbare Format:
Und hier ist ein Hexdump:
Erläuterung:
quelle
Bash + Coreutils, 54 Bytes:
Durchläuft einfach eine Sequenz
[Length of Input,1]
und gibt während jeder Iteration das Eingabewort mit der Länge des aktuellen Iterationswerts aus,9
wobei jede Zahl[0,9]
an jede der9
Kopien des Wortes angehängt wird . Führen Sie es in einer Datei und das Wort oder die Wörter in Anführungszeichen, dhbash A.sh "blah blah blah"
.quelle
Floroid -
50 4731 BytesVerwendet derzeit eine ähnliche Methode wie @JonathanAllan bei seiner zweiten rekursiven Methode.
Könnte habe dies gewesen , wenn ich das kartesische Produkt vorsichtiger in der Sprache implementiert haben würde:
Bc:ca([c]+[c[:-a-1]KaIw(Z(c)-1)],hd)
.Testfälle
quelle
(Lambdabot) Haskell - 49 Bytes
Lambdabot ist ein IRC-Bot bei #haskell; Es werden automatisch eine Reihe von Modulen importiert, darunter auch
Data.List
die , in denen sich die Module befindeninits
. Und weil eine Sprache durch ihre Implementierung definiert ist, kann ich diese Lambdabot-Haskell nennen und nicht die Bytes für die Importe bezahlen.Normaler Haskell:
quelle
tails
funktioniert?INVALID, NVALID, VALID, ALID, LID, ID, D,
Braingasmus ,
34333128 BytesIn seiner jetzigen Form ist Braingasm nur ein verherrlichter Brainfuck mit ein paar ( wie 3? ) Zusätzlichen Funktionen. Ich habe die meiste Entwicklungszeit damit verbracht, es so "unternehmungslustig" wie möglich zu machen, anstatt tatsächlich Features hinzuzufügen ...
Auf jeden Fall sollte der folgende Code mit dem neuesten Entwicklungs-Snapshot funktionieren. Es werden zeilenlose Eingaben von stdin, like
$ echo -n INVALID | braingasm invalid.bg
, und Ausdrucke nach stdout übernommen.Erläuterung:
edit: Anscheinend ist es in Ordnung, leere Zeichenketten als Begrenzer zu
überspringenquelle
Python 2,
53-55Bytes+2 Bytes: Deklaration von f bei Rekursion erforderlich (wie von @Destructible Watermelon hervorgehoben)
Kehrt zur leeren Zeichenfolge zurück (führt zu einer leeren Liste), schneidet jeweils ein Zeichen ab und stellt eine Liste von zehn Zeichen der aktuellen Zeichenfolge voran, an die jeweils die Ziffern 0-9 angehängt werden.
Test auf Ideone
Python 3,
5456 BytesTest auf Ideone
quelle
f=
Teil haben müssen (ein bisschen wie, wie Sie nicht annehmen können, dass Variablen Werte haben)Schnelle 3, 150 Bytes
Nicht ganz die kürzeste Lösung, aber für Swift nicht schrecklich
Testen Sie dies online in der IBM Swift Sandbox
Ungolfed
quelle
Rubin, 51
Kein Trennzeichen verwendet.
Fügen Sie
i%10
für Trennzeichen Folgendes nachher hinzu :,$/
für Zeilenvorschub,,?|
für|
(ähnlich für jedes druckbare Zeichen),,' '
für Leerzeichen.Im Testprogramm
quelle
PHP,
6456 Bytesquelle
Haskell,
4946 Bytesquelle
f=(>>=(
Map einfügen['0'..'9']).snoc).tail.reverse.inits
. 3 mit fmap:f=(>>=(<$>['0'..'9']).snoc).tail.reverse.inits
reverse.tail.inits
stattdessentail.reverse.inits
auch die richtige Ausgabe erhalten;)tail
, ich denke, ich meinteinit
, aber es mit der Rückseite zu tauschen funktioniert auch gut :-)C #,
107102 BytesUngolfed
quelle
k++
in der for-Schleife entfernen und++
nach der Verwendung von hinzufügenk
, also wie folgt:string f(string i){var o="";while(i!=""){for(int k=0;k<=9;)o+=i+k+++",";i=i.Remove(i.Length-1);}return o;}
Auch das Komma wird von OPs Herausforderung nicht benötigt, obwohl Sie es natürlich behalten können, wenn Sie es vorziehen. Ohne es ist das:string f(string i){var o="";while(i!=""){for(int k=0;k<=9;)o+=i+k++;i=i.Remove(i.Length-1);}return o;}
Rubin,
9085 BytesWenn die Zeichenfolge leer ist, geben Sie ein leeres Array zurück. Andernfalls generieren Sie die Zeichenfolge + die Zahl in jeder Zahl von 0 bis 9 und rufen Sie
f
mit der Zeichenfolge ohne das letzte Zeichen auf.5 Bytes gespart dank @LevelRiverSt
quelle
def
und einzuschließenend
. Sie können ein Lambda erstellen, sodass Sie ihm nicht einmal einen Namen geben müssen, solange Sie es einer Variablen zuweisen und mit den Argumenten in eckigen Klammern aufrufen.f=->s{if s=="";return[];end;(0..9).map{|i|s+i.to_s}+f[s.chars.take(s.length-1).join]}
5 Bytes kürzer.->
Syntaxf=->s{s==""&&(return[]);(0..9).map{|i|s+i.to_s}+f[s.chars.take(s.length-1).join]}
Speichert weitere 4 Bytes. Ruby wertet boolesche Ausdrücke von links nach rechts aus und wertet spätere Ausdrücke nur aus, wenn dies zur Ermittlung des Ergebnisses erforderlich ist. Die gleiche Golftechnik kann bei C angewendet werden. Ich weiß nicht, warum in diesem Fall die()
Umgebungreturn[]
erforderlich ist.Perl 6, 32 = 31 Bytes + 1 für -p
Ich bin mit Perl 6 nicht so gut vertraut, daher gibt es möglicherweise Möglichkeiten, es noch weiter zu reduzieren.
Es wird
-p
einmal für jede Eingabezeile ausgewertet. Die Zeile wird eingefügt$_
und nach Ausführung des Programms gedruckt$_
.Das
(~$_,*.chop...^!*)
ist es, eine Liste , in der das erste Element Zeichenfolge (~
) eingegeben wird , jedes nachfolgende Element durch Zerhacken des letzten Zeichens aus dem vorherigen erhalten wird (*.chop
) , und dass weiter , bis die Zeichenfolge leer ist (!*
), mit Ausnahme der leeren String Fall (der^
in...^
) .X~
generiert alle Listenpaare links und rechts unter Verwendung der angegebenen Operation, in diesem Fall der Zeichenfolgenverkettung (~
).^10
ist eine Liste von 0, 1, ... 9.Abschließend wird die Liste erneut mit einem String versehen
~
, wobei die erforderlichen Wörter mit einem Leerzeichen als Trennzeichen versehen werden.quelle
PowerShell v2 +, 60 Byte
Schleifen von der Länge der Eingabezeichenfolge bis
1
. Setzen Sie den Helfer bei jeder Iteration$i
gleich der aktuellen Zahl minus1
. Dies ist erforderlich, da.length
es sich um die Gesamtzahl der Zeichen handelt, die Indizierung einer Zeichenfolge jedoch auf 0 basiert. Dann machen wir eine Schleife von0
bis9
. Schneiden Sie die Eingabezeichenfolge für jede innere Schleife$n
auf der Grundlage des Werts unserer äußeren Schleife-join
in eine Zeichenfolge und verknüpfen Sie die Zeichenfolge mit der Anzahl der inneren Schleifen. Jedes einzelne Schleifenergebnis wird in die Pipeline gestellt, und die Ausgabe erfolgt implizit bei Programmabschluss.quelle
Dyalog APL ,
1411 BytesGibt eine Liste von Zeichenfolgen zurück.
,
listify (Tabelle zur Liste machen)⎕D
alle Ziffern∘.,⍨
an alle angehängt (dh alle Kombinationen mit)⌽
die umgekehrte Liste von,\
die kumulative Verkettung von⍞
die TexteingabeTryAPL online!
quelle
Groovy (58 Bytes)
Keine Ahnung, warum ich überhaupt die Mühe habe, eine Groovy-Antwort zu posten ... Die Mindestgröße für einen Groovy-Golf beträgt 2, basierend auf der Notwendigkeit eines Verschlusses. Die beste Antwort hier ist also das Doppelte meiner Mindestgröße.
Versuchen Sie es hier: https://groovyconsole.appspot.com/script/5148433803378688
quelle
Batch,
8583 Bytesquelle
Java 7,
10598 Bytes-7 Bytes dank @Poke .
Ungolfed :
Testcode:
Probieren Sie es hier aus.
Ausgabe:
quelle
void c(String s){for(int x=0,l=s.length();x<l*10;)System.out.print(s.substring(0,l-x/10)+x++%10);}
Python 3, 62 Bytes
Verwendet keine Rekursion wie die andere Antwort.
Der "" Grund, warum das
x+" "
Feld "" vorhanden ist: -0 ist immer noch Null, und daher können wir nicht die Minus-Notation verwenden, um den gesamten String auf diese Weise abzurufen, sodass das höchste Feld, das wir verwenden können, minus eins ist die Saite,quelle
C,
72, 70 BytesNimmt Zeichenketten als Zeiger / Größen-Paare. Testleitung:
quelle
Retina , 37 Bytes
Die Anzahl der Bytes setzt die Kodierung nach ISO 8859-1 voraus.
Probieren Sie es online!
Erläuterung
Holen Sie sich alle Präfixe der Eingabe, indem Sie alle überlappenden Übereinstimmungen von rechts abgleichen und ausdrucken.
Fügen Sie
0
an jede Zeile ein an.Das
{
zeigt an, dass die verbleibenden drei Phasen in einer Schleife ausgeführt werden, bis die Zeichenfolge nicht mehr geändert werden kann. Die%
besagt, dass sie für jede Zeile separat angewendet werden sollten.Die Stufe selbst dupliziert einfach die letzte Zeile (anfänglich ist dies nur die Zeile, auf der diese ausgeführt wird, aber jede Iteration der drei Stufen fügt eine weitere Zeile hinzu).
Erhöhen Sie die Ziffer in der letzten Zeile, indem Sie die folgenden Zeichen ersetzen:
Und schlussendlich:
Behalten Sie nur die ersten 10 Zeilen bei, damit wir die gerade hinzugefügte Zeile entfernen
INPUT9
.quelle
Scala,
73-70BytesNenne es so
f("INVALID")
. Gibt eine Folge von Zeichen zurück.Erläuterung
Alternative Lösung, 73 Bytes
definiert eine anonyme Funktion. Um es zu nennen, schreiben Sie
und nenne es so
Es wird eine Folge von Zeichenfolgen zurückgegeben, die beim Drucken wie folgt aussehen:
Erläuterung
quelle
CJam,
2928 BytesErläuterung:
Probieren Sie es online aus
quelle