Viele Leute wissen, was eine Wahrheitsmaschine in der Programmierung ist. Aber es ist an der Zeit, die Dinge in Schwung zu bringen. Wir stellen vor, die erweiterte Wahrheitsmaschine! Eine erweiterte Wahrheitsmaschine nimmt zwei Dinge als Eingabe, eine Ganzzahl n
und eine nicht leere Zeichenfolge s
. Es gibt s
n
Zeiten mit optionalem abschließendem Leerzeichen aus. Wenn n
jedoch gleich ist 0
, müssen Sie so lange ausgeben, s
bis das Programm manuell gestoppt wird, dh es sollte niemals beendet werden.
Wenn n
es sich um eine negative Zahl handelt, muss die Zeichenfolge umgekehrt werden. Zum Beispiel mit s=hello
und n=-1
, Ausgabe wäre olleh
.
Standard-Eingabemethoden, jede Art von Ausgabe, solange sie mit unendlich umgehen kann. Wenn Sie eine Antwort haben, die nicht unendlich ist, können Sie sie gerne posten, wenn sie interessant ist oder in einer Sprache, die nicht unendlich ist.
Testfälle
n, s, output
5, "hello world", "hello worldhello worldhello worldhello worldhello world"
0, "PPCG", "PPCGPPCGPPCGPPCG..."
-2, "truThY", "YhTurtYhTurt"
2000, "o", "oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo"
Das ist Code-Golf , also gewinnt der kürzeste Code!
Hier ist der ursprüngliche Sandbox-Beitrag. Es wurden Änderungen vorgenommen. Vielen Dank an @ComradeSparklePony für die Idee dieser Herausforderung
quelle
-n
anstelle von verwendenabs n
.PHP> = 7.1, 67 Bytes
Version mit
list(,$x,$y)
statt[,$x,$y]
online ausprobieren!quelle
MATL , 37 Bytes
Probieren Sie es online!
Erläuterung:
quelle
Python 3, 71 Bytes
Probieren Sie es online!
Die Variable
k
garantiert, dass die Schleife immer mindestens einmal ausgeführt wird. Dies bedeutet, dass wennn=0
, dannn
bei der nächsten Iteration der Schleife negativ ist, so dass die Schleife für immer weiter ausgeführt wird.quelle
Matlab, 87 Bytes
Mein erster Versuch, Code-Golf zu spielen! Anregungen zum Golfen sind willkommen.
quelle
05AB1E ,
171614 BytesProbieren Sie es online!
Erläuterung:
2 Bytes gespart dank @EriktheOutgolfer
quelle
'-å
mit0‹
und0Q
mit ersetzen_
.Cubix , 41
Vierundvierzig45BytesÜbernimmt die Eingabe als
<N> <String>
Probieren Sie es online!
Cubified:
Schau es dir an
Es gibt immer noch eine Menge No-Ops im Code, aus denen ich vielleicht ein paar Bytes mehr herausholen kann, aber ich wollte das aufklären, bevor ich es kaputt mache.
Grundlegende Vorgehensweise ist
I
Zähler vom Eingang holenA
Nehmen Sie den Rest der Eingabe als Zeichen;p?
entferne das Leerzeichen, rufe die Zahl auf und teste siepsuqB$)
Wenn der Zähler negativ ist, kehren Sie den Stapel um. Dies beinhaltet die Behandlung der Eingangsnummer und des EOI-Markers (-1). Erhöhe den Zähler.;p;ouqu
Wenn der Zähler Null ist, entfernen Sie den Zähler und den EOI-Marker und starten Sie die ewige Ausgabeschleife.(
Wenn positiv, den Zähler dekrementieren<<q?/o()u
die Ausgangsschleife. Dies gibt jedes Zeichen des Stapels aus, bis der EOI-Marker (-1) erreicht ist.... _ ... ?wq!
Gehen Sie am Ende des EOI-Markers um den Würfel herum und reflektieren Sie zum?
, wechseln Sie die Spur, lassen Sie den EOI-Marker nach unten fallen und testen Sie den Zähler.@
wenn null, halt?u(
Wenn Sie sich positiv wenden und dekrementieren, wird der Anfang der Schleife erreicht? ... <)
Wenn dies negativ ist, gehen Sie um den Würfel herum zur anderen Seite und leiten Sie ihn an den Anfang der Schleife weiter, während Sie über ein Inkrement fahren./)<
wenn negativ inkrementieren und weiter zur Ausgangsschleifequelle
JavaScript (ES6), 79 Byte
Snippet:
quelle
!n&&
Endlosschleife zu machen. Wird dies jedoch irgendwann zu einem StackOverflow führen?it should never terminate.
JavaScript (ES6),
98949183 Byte-4, -5 Bytes dank Arjun
-3 Bytes dank Rick Hitchcock
Begann anders als die Java-Antwort , wurde aber nach dem Golfen schnell sehr ähnlich. Alert ist unendlich, aber wenn Sie möchten, dass es schön aussieht, wechseln Sie zu
console.log
.l=alert;
und Ausschreibenalert
sind gleich lang, aber wenn Sie zu wechseln, istconsole.log
es kürzer, um es neu zu definieren.quelle
while(!n)l(s)
stattif(!n)for(;;)l(s)
.[...s].reverse()
statts.split''.reverse()
l(s.repeat(Math.abs(n)))
stattfor
endlich Schleife.QBIC , 36 Bytes
Hier ist viel los, und QBIC / QBasic hat einfach nicht die Syntax, um mit solchen Bedingungen elegant umzugehen.
Erläuterung:
quelle
Java (OpenJDK 8) , 137 Byte
Probieren Sie es online!
quelle
str , 30 bytes
Probieren Sie es online!
Erläuterung
quelle
C (gcc) ,
115112109107104 BytesProbieren Sie es online!
C (gcc) , 115 Bytes (134 mit
#include<string.h>
vorne)Probieren Sie es online!
quelle
Netzhaut , 49 Bytes
Eingabeformat: Übernimmt die Zeichenfolge, gefolgt von einer neuen Zeile, gefolgt von der Zahl.
Probieren Sie es online!
Erläuterung:
Der
/¶-/&
führt diese Zeile nur aus, wenn die Zahl negativ ist.V
ist die umgekehrte Phase, und es kehrt sich um^.+
, was der Zeichenfolge entspricht (.
entspricht jedem Zeichen mit Ausnahme von Zeilenumbrüchen).Das
/¶0/&
führt diese Zeile nur aus, wenn die Zahl 0 ist. Startet//+>
eine Endlosschleife, die den Arbeitsstring nach jeder Iteration ausgibt.G0
Nimmt die Zeichenfolge und verwirft die Nummer. es macht das unendlich und druckt jedes Mal.Dies markiert den Code, der eine Zeichenfolge generiert. Das Programm wertet den String als Retina-Code aus.
(.+)¶-*(\d+)
die Zeichenfolge entspricht die gesamte Zeichenfolge und setzt in der Gruppe 1 die Erfassung und die Anzahl in Gruppe 2.e Erfassung.-$2+>K
`$1
erzeugt der Retina Code ausgeführt werden:.
impliziten Ausgang abschaltet (sonst die Zeichenfolge gedruckt werden würde , n + 1 - mal),-$2+
setzt eine Wiederholungsschleife das wiederholt sich {Capturing Group 2} mal. Das Minus am Anfang verwandelt die Zahl in eine negative Zahl, da dies die Konvergenzfunktionalität in der Schleife deaktiviert, die sie nach der ersten Iteration stoppen würde.>
Legt fest, dass diese Schleife nach jeder Iteration gedruckt wird. Der Rest des Codes dient nur zum Drucken der Zeichenfolge.quelle
Perl 6 , 44 Bytes
Probieren Sie es online!
Anonymer Codeblock, der eine Zahl und eine Zeichenfolge akzeptiert und eine (möglicherweise unendliche) Liste zurückgibt
quelle