Dies ist eine sehr einfache Herausforderung.
Die Scherzsprache InterpretMe besteht aus einem Befehl; *
, wodurch das Programm die Eingabe eines InterpretMe-Programms übernimmt und ausführt.
Ein InterpretMe-Programm interpretiert so viele InterpretMe-Programme, wie *
eingegeben werden.
Ihr Ziel ist es, ein Programm zu erstellen, das InterpretMe in möglichst wenigen Bytes interpretiert.
Eingang
Die Eingabe besteht aus einzeiligen ASCII-Zeichenfolgen, Unicode-utf-8-Zeichenfolgen, wenn Sie dies wirklich möchten, oder einer beliebigen Zeichenkodierung, die Ihre Sprache verwendet, wenn Sie dies wünschen. Diese Zeichenfolgen können entweder zu Beginn oder zu Beginn jedes Laufs des InterpretMe-Interpreters eingegeben werden. Wenn sie alle zu Beginn eingegeben werden, muss das Programm jede Programmzeile beim Start ausgeben.
Ausgabe
Bei dieser Herausforderung gibt es keine Ausgabe, es sei denn, die Option einer Eingabe ist ausgewählt, andernfalls nur Beendigung und Nichtbeendigung
Testfälle bestehen nicht aus Eingabe und Ausgabe, sondern aus Eingabe und Beendigung. Eine neue Zeile kennzeichnet eine neue Eingabe, die als InterpretMe interpretiert werden soll.
Wenn Sie zu Beginn einen Eingang verwenden, kann dies als Ausgabe betrachtet werden, wenn diese Programme eingegeben werden, gefolgt von inaktiven Zeilen (nichts tun).
1. * (executes input as an interpret me program, finishes)
2. * (^same)
3. ** (executes input as an interpret me program, then does this again after the first program is done, finishes)
4. hi (nothing, first star of previous line finishes)
5. ** (same as the other two star line)
6. hi (nothing, first star of previous line finishes)
7. hi (nothing, second star of line 5 finishes, so second star of line 3 finishes, so line 2 finishes, so line one finishes)
[termination] (not outputted)
hi (does nothing and finishes)
[termination]
*hi (executes inputted program, finishes)
*yo (executes inputted program, finishes)
hey (nothing)
[termination]
Auch dies ist Code-Golf , also sind weniger Bytes besser
Antworten:
05AB1E , 11 Bytes
Code:
Erläuterung:
Verwendet die CP-1252- Codierung. Online ausprobieren? .
quelle
Python 3, 35 Bytes
setzt i auf eins, addiert den Betrag von '*' -1 zu i
Ich denke, ich kann das mitich nicht konnte~
Tricks reduzieren, diequelle
Python 3,
3938 Bytes1 Byte dank @atlasologist gespeichert
quelle
f=->f()for c in prompt()when c=='*'
(ich möchte keine weitere Antwort geben, da es eine direkte Kopie von Ihnen ist)def f()
anstelle derf=lambda
) verwenden.Ruby, 29 Bytes
Rubys magische Variable
$.
verfolgt die Anzahl der von stdin gelesenen Zeilen. Lesen Sie die Eingabe weiter, während diese Zahl niedriger ist als die Anzahl der Sternchen (plus der ersten 1).quelle
JavaScript,
534544 BytesDie Verwendung dieses Programms ist aufgrund des Mangels an guter E / A in JavaScript ziemlich ärgerlich.
Fragt nach einem Programm und fragt dann nach einem anderen Programm für jedes
*
im Eingabeprogramm.quelle
Nur Java
45 60 101 10099 BytesReverse Code-Golf: D. Mir ist aufgefallen, dass ich die Spezifikationen (zweimal) falsch gelesen habe, aber jetzt sollte es funktionieren. Scheint einfach genug, vielleicht gibt es eine bessere Möglichkeit, dies als Lamda-Ausdruck zu schreiben.
Etwas schäbiges Betrügen für nur 17 Bytes!
Diese Version wird durch sehr schnelles Tippen eingegeben
quelle
if(b=='*')
kannif(b==42)
für -1 Byte gespielt werden. Undnew Java.util.Scanner(
sollte mit Kleinbuchstaben seinj
. +1 für den Reverse-Code-Golf-Teil. ;)for(int b:a)
speichert ein zusätzliches Byte, also weniger als 100 Bytes für nichts zu tun: DMathematica, 38 Bytes
quelle
APL, 15 Bytes
Prüfung:
Erläuterung:
quelle
Perl, 33 Bytes
Zählt die Häufigkeit, mit der * in der Eingabe vorkommt, und addiert diese zur Häufigkeit der Schleifen. Ich denke, es sollte eine Möglichkeit geben, das Dekrementieren im selben Schritt wie das Inkrementieren durchzuführen, aber ich konnte es nicht herausfinden.
quelle