Ich habe mir eine neue Methode ausgedacht, um meine Passwörter zu generieren, und obwohl es auf lange Sicht wahrscheinlich nicht sehr clever ist, könnte es dennoch Spaß machen, Code-Golf zu spielen.
Unter Verwendung einer Wortfolge wird das Passwort folgendermaßen generiert:
- Wählen Sie das n-te Zeichen im n-ten Wort
- Wenn n größer als das Wort ist, zählen Sie rückwärts weiter
Beispiel:
This is a fun task!
T s a u !
T ist das erste Zeichen
s ist das zweite
a ist das erste, aber hin und her ist es auch das dritte
u ist das zweite, aber da rückwärts gezählt wird, ist es auch das vierte
'!' ist das fünfte Zeichen in 'Aufgabe!' und somit im endgültigen Passwort enthalten sein,Tsau!
Regeln
- Die Eingabe wird eine Zeichenfolge sein
- Trennen Sie die Zeichenfolge in Leerzeichen, alle anderen Zeichen müssen enthalten sein
- Großbuchstaben müssen wie Kleinbuchstaben groß geschrieben werden
- Sie gehen in jedem Wort n Schritte vor, wobei n die Anzahl der vorangegangenen Wörter plus eins ist
- Wenn n größer als das Wort ist, müssen Sie das Wort rückwärts durchgehen. Wenn Sie den Anfang treffen, gehen Sie erneut vorwärts, bis Sie n- mal einen Schritt gemacht haben
- Das erste und letzte Zeichen wird nur einmal verschoben, so dass "funufun" auf der siebten Position als Beispiel "funufun" und endet auf n, nicht "funnuff" und endet auf f
- Die Ausgabe muss eine Zeichenfolge sein
Beispiele:
Input Output
Once Upon A Time OpAe
There was a man Taaa
Who made a task Waak
That was neat! Taa
This is a long string to display how the generator is supposed to work Tsagnoyotoipto
Der kürzeste Code in Bytes gewinnt!
to
ist das 12. Wort (0-indiziert) in der langen Zeichenfolge, und daher sollte der Codebuchstabet
nicht seino
.Tsau!
is chinese forFuck!
Antworten:
Python 2 , 72 Bytes
Probieren Sie es online!
quelle
05AB1E , 11 Bytes
Probieren Sie es online!
Erläuterung
quelle
Gelee , 12 Bytes
Probieren Sie es online!
quelle
Java 10,
148117114110 Bytes-31 Bytes dank @SamYonnou durch Erstellen eines Ports für die JavaScript-Antwort von @ user71546 . Nochmals
-4 Bytes dank @SamYonnou , der den Algorithmus für Java optimiert.
Probieren Sie es online aus.
Erläuterung:
quelle
s->{int i=-1,j;for(var a:s.split(" ")){System.out.print(a.charAt(++i>(j=a.length()-1)?j>0?i/j%2==0?i%j:j-i%j:0:i));}}
==0
um<1
.++i>(j=a.length()-1)
Bedingung beseitigt wird, da die Mathematik unabhängig vom Ergebnis dieser Bedingung auf die gleiche Weise funktioniert:s->{int i=-1,j;for(var a:s.split(" "))System.out.print(a.charAt(0<(j=a.length()+i-++i)?i/j%2<1?i%j:j-i%j:0));}
0<(j=a.length()+i-++i)?
,(j=a.length()-1)>0*i++?
damit die Erklärung ein bisschen einfacher zu tippen war (keine Bytes, die dabei jedoch gespeichert wurden).Kohle , 16 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
Ich verwende nicht oft den letzten Parameter von Slice.
quelle
JavaScript (Node.js) ,
78706968 Byte-1 Byte @Arnauld
Probieren Sie es online!
Erläuterung
quelle
Rot , 135 Bytes
Probieren Sie es online!
Lesbar:
quelle
Perl 5 , 76 Bytes
Probieren Sie es online!
quelle
k ,
313028 BytesProbieren Sie es online!
quelle
|-1_
->1_|
Pyth , 12 Bytes
Probieren Sie es online aus
quelle
Japt
-P
11 BytesVersuch es
Versuch es
Erklärungen
quelle
C (gcc) , 148 Bytes (String-Version), 114 Bytes (Druckversion)
Wenn ich einen String zurückgeben muss (lange Version):
Probieren Sie es online!
Ansonsten drucke ich nur und mache mir keine Sorgen um einen Puffer (Kurzversion):
Probieren Sie es online!
quelle
-(j>1)-1
kann durch+~(j>1)
1 Byte weniger ersetzt werden, denke ich.putchar( t[ j=strlen(t)-1, k = i++ % (j ? j*2 : 1), k<j ? k : j+j-k ]);
Probieren Sie es online!*u++
mitc[i]
und entfernen Sie u.AWK, 79 Bytes
Vor allem, weil ich neugierig bin, bessere awk- oder bash-Lösungen zu sehen!
Probieren Sie es online!
quelle
C # (.NET Core) , 111 Byte
Probieren Sie es online!
quelle
Haskell,
656261 BytesProbieren Sie es online!
Es erfordert die neueste Version,
Prelude
die die<>
Funktion bietet .Edit: -3 Bytes dank @ user28667, -1 Bytes dank @B. Mehta
quelle
zipWith(\i w->(cycle$id<>reverse.drop 1.init$w)!!i)[0..].words
auch so aus.\i->(!!i).cycle.(id<>reverse.drop 1.init)
und die explizitew
Erwähnung (TIO)Stax , 9 Bytes
Führen Sie es aus und debuggen Sie es
Ausgepackt, ungolfed und kommentiert sieht es so aus.
Führen Sie dieses aus
quelle
PHP , 77 Bytes
Probieren Sie es online!
quelle
foreach(...){$c=...;echo$c[...];}
anforeach(...)echo($c=...)[...];
. Versuchen Sie es online: 87 Bytes.=
zwei Bytes zu speichern:while(ord($w=$argv[++$i]))echo($w.=strrev(substr($w,1,-1)))[~-$i%strlen($w)];
Probieren Sie es online ausPower Shell
208186170 BytesUngolfed:
Testfälle unten oder versuchen Sie es online
quelle
""|%{
mit$args|%{
, aber ich denke , man kann es Golf effektiver auch;)J, 43 Bytes
ungolfed
<;._1 ' '&,
nach Leerzeichen aufteilen(, }.@}:)&.>
Töte für jedes Wort die erste und letzte Ulme und hänge sie an das Wort an#@> | i.@#
Man nehme den Rest der Länge jedes Wortes, aufgeteilt in seinen Index> {~"_1
nimm das Ergebnis und pflücke es aus jedem Wort.Probieren Sie es online!
quelle