Wenn eine Zahl auf einem Taschenrechner angezeigt wird, können Sie überlegen, wie verschiedene Transformationen dieser Zahl aussehen würden. Beispiel: Auf einer Siebensegmentanzeige wird 2 folgendermaßen angezeigt:
Und wenn es horizontal gedreht wird, sieht es so aus:
Als solches ist das Spiegelbild von 2 5.
Die Aufgabe bei dieser Herausforderung besteht darin, eine einstellige Zahl zu nehmen und die Zahl, die das Spiegelbild ist, zurückzugeben (falls möglich). Wenn das Spiegelbild nicht wie eine Zahl aussieht, geben Sie die Zahl um 180 Grad gedreht zurück (falls möglich). Ist dies nicht der Fall, geben Sie -1 zurück.
Hier ist die vollständige Liste der Ein- und Ausgaben, die Ihr Programm verarbeiten muss:
Input Output
0 0
1 -1
2 5
3 -1
4 -1
5 2
6 9
7 -1
8 8
9 6
Als Code-Golf- Herausforderung gewinnt der kürzeste Code!
Antworten:
Haskell -
433143 Charaktere ohne etwas Besonderes.
Es wurde auf 31 Zeichen reduziert, indem eine Teilfunktion erstellt wurde.
quelle
f=
für die zweite Lösung benötigen, da es sich um einen gültigen Ausdruck handeltGolfScript,
1514Ich las die Spezifikation erneut und stellte fest, dass die Eingabe eine Zeichenfolge sein muss.
Zu rennen:
Alte Version (mit Integer-Eingabe):
Das neuere (14 Byte) ist etwas von der CJam-Antwort von aditsu inspiriert .
quelle
PowerShell - 27
quelle
Python 2.x - 28
quelle
`
s entfernen und 2 Zeichen speichern.JavaScript
3736quelle
.search()
und speichere ein Byte.CJam, 20 Bytes
Probieren Sie es online aus.
Ausgabe
Wie es funktioniert
quelle
BEFUNGE 93 -
181420 BytesIch denke, die Kommentatoren haben Recht, obwohl Befunge als 2D-Sprache etwas anders ist. Dennoch haben die Kommentatoren in diesem Moment Recht.
Schritte:
Liest die Eingabe als numerischen Wert x und schiebt sie auf den Stapel.
Erhält den Zeichenwert c (also '!' = 33 oder '*' = 42. Eine leere Zelle = 32) an Position x, 1.
Liest den Zeichenwert der Zelle 0,1 (33), subtrahiert ihn von c und gibt ihn als numerischen Wert aus.
quelle
&1g'!-.
Java - 49
Hier
0x790a300601
ist ein Wert, der mit den gewünschten Ausgängen gefüllt ist, wobei einer hinzugefügt wird, um sie positiv zu machen. Die Werte werden in Halbbytes innerhalb des Werts gespeichert, daher ist ein wenig Verschieben und Maskieren erforderlich, um sie auszublenden.Java - 100 (unterhaltsame Option)
Nicht die kleinste Option, aber ein bisschen Spaß. Ich habe einen zufälligen Startwert gefunden, der beim X- maligen Aufruf die richtigen Werte liefert (wobei 0> = X <= 9).
quelle
JavaScript (ECMAScript 6) 25
JavaScript (ECMAScript 5) 43
UPDATE: edc65 hat eine viel bessere Technik vorgeschlagen. Zahnbürste hat eine viel bessere Sprache vorgeschlagen. Zu diesem Zeitpunkt sind mein Hauptbeitrag das Debuggen und Kaugummi.
quelle
x=>[0,-1,5,-1,-1,2,9,-1,8,6][x]
.function(x)[0,-1,5,-1,-1,2,9,-1,8,6][x]
, auch dank Firefox. Ich würde sowieso nicht gewinnen, also beschloss ich, mich nur an die Antwort mit der höchsten Kompatibilität zu halten. Wenn ich anfange, die Sprache der Kürze halber zu wechseln, werde ich irgendwann meine eigene Sprache für jede meiner Herausforderungen definieren. Aber ich werde trotzdem die ECMAScript 6-Version erwähnen, da Sie sie vorgeschlagen haben-(x!=6)
. Vielen Dank.f=
sei denn, Sie rufenf
rekursiv auf oder die Frage erfordert ausdrücklich eine Funktion mit einem bestimmten NamenBash 29
z.B
quelle
'
den Ausdruck um sed weglassen . Auch ich denke, Sie können das weglassen,g
weil die Spezifikation nur eine Ziffer auf einmal liefert'
. Ich mag dieg
für längere Eingabe!Kona - 29
Diese Funktion gibt das Element
x
aus dem Array zurück0 -1 5...
Beispiele:
quelle
JavaScript 36
3741als ES6 Funktion - 27:
quelle
f=v=>~-[1,,6,,,3,10,,9,7][v]
Sclipting, 11 Zeichen
Schließlich habe ich einen Windows-Computer gefunden, auf dem Visual Studio installiert ist, um dessen Interpreter zu erstellen. Und es hat meinen GolfScript-Code leicht besiegt.
Es liest
18453063256\11\?/11%(
in GolfScript.quelle
J -
2827 BytesDu weißt was ich mag? Einfachheit (28 Bytes). Beachten Sie, dass in J
_1
eine negative Zahl (-1) ist.Fügen Sie ein wenig Komplexität hinzu und Sie haben 27 Bytes.
Beispiel:
quelle
CJam - 14
Eingabe- / Ausgabeversion:
Stack-Version (setzt voraus, dass sich die Nummer auf dem Stack befindet):
Probieren Sie sie unter http://cjam.aditsu.net/
quelle
Perl,
2726Count enthält die
p
FlaggeVerwendung:
Warten Sie, hat Perl gerade J geschlagen? :)
quelle
y+0-9+9a4aa70a13+;$_=9-hex
, das ist die gleiche Länge, aber Ihr ist origineller;)echo 1 | perl -pe y/2569/5296/,s/[347]/-1/
Marbelous 34 Bytes
Es ist nicht die kürzeste Lösung, aber auch nicht die längste.
Wie es funktioniert
}0
erzeugt eine Murmel, die die erste Befehlszeileneingabe darstellt. Dieser Marmor fällt beim nächsten Tick auf die=6
Zelle.=6
Ist eine Vergleichszelle, drückt sie jeden Marmor mit dem Wert 6 nach unten und alle anderen nach rechts. Diese Reihe von Vergleichszellen drückt die Murmeln nach rechts, bis sie einem gewünschten Wert entsprechen. 0 und 8 fallen einfach durch und werden gedruckt, wenn sie von der Unterseite der Platine fallen. 6 und 2 und 9 und 5 werden zuerst mit 3 addiert und von diesen jeweils abgezogen. Wenn ein Marmor nicht den gewünschten Werten entspricht, landet er in der?0
Zelle, wodurch jeder Marmor zu einem 0-Marmor 1 wird . Dieser Marmor wird dann dekrementiert und fällt vom Brett.1 Ein
?n
Marmor verwandelt technisch jeden Marmor in einen Marmor zwischen 0 und n. Das hat den netten Nebeneffekt, dass?0
alles zu 0 wird.quelle
MATLAB - 35
Ich würde dies in eine Funktion mit
n
dem einzigen Parameter einschließen.35 Zeichen.
quelle
ECMAScript 6, 24
Mit normalem JavaScript wäre es 33:
quelle
TI-BASIC,
2422Dies codiert die möglichen Ausgaben in einer Nachschlagetabelle, die als Gleitkommazahl zur Basis 11 gespeichert ist. Die (N + 1) -te Ziffer der Basis 11 nach dem Dezimalpunkt wird aus der Tabelle extrahiert, um den Wert der invertierten Ziffer zu erhalten. In der Basis 11 ist die Zahl
.106003A097
und die Ziffern dieser Zahl sind genau0,-1,5,-1,-1,2,9,-1,8,6
.Der Trick von edc65, bei 6 eine zu subtrahieren, führt zu dieser 24-Byte-Lösung, bei der
⑩^(
es sich um ein einzelnes 1-Byte-Token handelt:Der String-Ansatz ist 29 Bytes:
Der Array-Ansatz (den auch Ypnpyn gewählt hat) ist 30 Byte, vorausgesetzt, die Nummer ist in X gespeichert:
24 -> 22: Zwei zusätzliche Präzisionsziffern in der magischen Konstante entfernt.
quelle
C - 47 Bytes [war 48 Bytes]
So fügen Sie E / A für 86 Bytes hinzu (was andere Antworten nicht immer taten):
quelle
Python - 34
quelle
f=lambda n:ord(" "[n])-3
Arbeiten mit Leerzeichen codeskulptor.org/#user34_Q7NbNvQy55_0.py	
es minus 3, weil -1 ein Null-Zeichen hinterlässt, was nicht gut ist, und minus 2 einen Zeilenvorschub, der in Python reserviert istJava,
58-59ODER
quelle
JavaScript
4237Führen Sie es in der Konsole Ihres Browsers aus
quelle
C -
1171081067776 BytesNicht die beste Sprache zum Golfen, aber na
ja ... Kompilieren mit
gcc progname.c -o progname
. (Ignorieren Sie die Warnungen oder ergänzen Sie-include stdio.h
den Kompilierungsbefehl.)BEARBEITEN
Nach dem Vorschlag von @ bebe ist hier ein Beispiel, das stattdessen die Eingabe von STDIN übernimmt:
C -
6851 Bytesquelle
d=*b[1]-48
könnte eine gute Idee seinmain(){printf("%d",(int[]){1,0,6,0,0,3,10,0,9,7}[getchar()-48]-1);}
Es tut mir leid, dass ich Sie so gestört habe, aber ich finde das etwas kürzer.a[]={1,0,6,0,0,3,10,0,9,7};main(){printf("%d",a[getchar()-48]-1);}
main(){printf("%d","106003:097"[getchar()-48]-49);}
51 BytesJ (24, Funktion)
(Das Eingabefeld spielt nicht gut. Fügen Sie Folgendes in einen Python-Interpreter ein, und meine Antwort wird angezeigt :)
quelle
Clojure - 36
quelle
05AB1E , 13 Bytes (nicht konkurrierend)
Probieren Sie es online!
-3 danke an Emigna .
Erläuterung:
quelle
0®5®®Y9®8 6¹@
sollte auch funktionieren.@
. Nicht oft sieht man das gebraucht :))¹è
oder)sè
.PHP ,
4839 BytesVielen Dank an Jörg Hülsermann
Probieren Sie es online!
ältere Versionen
Probieren Sie es online!
quelle
Jelly , 14 Bytes (nicht konkurrierend)
Probieren Sie es online!
Erläuterung:
quelle
ịV = žh‡
in 05AB1E