Einführung
Sie müssen eine Funktion erstellen, um arabische Ziffern in griechische Ziffern umzuwandeln. Die Eingabe ist eine Ganzzahl kleiner 1000
und größer als 0
.
Algorithmus
- Split - Nummer in Ziffern (zB
123
->1
,2
,3
) - Nehmen Sie jede Ziffer und Änderung Charakter gefunden unten in der Tabelle, für den Buchstaben Symbol oder Buchstaben Namen, (zB
123
->1
,2
,3
->ΡΚΓ
oderRhoKappaGamma
).
Spezifikationen
- Keine eingebaute Konvertierung des Zahlensystems
- Das Ergebnis muss wie im Beispiel großgeschrieben werden.
- Die Eingabe erfolgt in Basis 10.
Testfälle
123 -> RhoKappaGamma or ΡΚΓ
8 -> Eta or Η
777 -> PsiOmicronZeta or ΨΟΖ
100 -> Rho or Ρ
606 -> ChiDiGamma or ΧϜ
Tabelle
Α = 1 = Alpha = 913 UTF-8
Β = 2 = Beta = 914 UTF-8
Γ = 3 = Gamma = 915 UTF-8
Δ = 4 = Delta = 916 UTF-8
Ε = 5 = Epsilon = 917 UTF-8
Ϝ = 6 = DiGamma = 988 UTF-8
Ζ = 7 = Zeta = 918 UTF-8
Η = 8 = Eta = 919 UTF-8
Θ = 9 = Theta = 920 UTF-8
Ι = 10 = Iota = 921 UTF-8
Κ = 20 = Kappa = 922 UTF-8
Λ = 30 = Lambda = 923 UTF-8
Μ = 40 = Mu = 924 UTF-8
Ν = 50 = Nu = 925 UTF-8
Ξ = 60 = Xi = 926 UTF-8
Ο = 70 = Omicron = 927 UTF-8
Π = 80 = Pi = 928 UTF-8
Ϙ = 90 = Koppa = 984 UTF-8
Ρ = 100 = Rho = 929 UTF-8
Σ = 200 = Sigma = 931 UTF-8
Τ = 300 = Tau = 932 UTF-8
Υ = 400 = Upsilon = 933 UTF-8
Φ = 500 = Phi = 934 UTF-8
Χ = 600 = Chi = 935 UTF-8
Ψ = 700 = Psi = 936 UTF-8
Ω = 800 = Omega = 937 UTF-8
Ϡ = 900 = SamPi = 992 UTF-8
code-golf
number
natural-language
Niemand ist hier
quelle
quelle
123
nicht "PKΓ" sein700
und803
(mit Nullen als Ziffern) hinzufügen .Antworten:
Gelee ,
4240 BytesProbieren Sie es online aus! oder überprüfen Sie alle Testfälle .
quelle
Pyth,
49484644 BytesProbieren Sie es hier aus.
Wir arbeiten immer noch daran, die Funktion zum Generieren des Alphabets zu verkürzen ... und ja, der Generator ist länger als das Hardcodieren des Alphabets um 4 Zeichen, jedoch nicht in Bytes.
So funktioniert die Funktion zum Generieren von Alphabeten. Nehmen wir alle Codepunkte und subtrahieren 913 (der kleinste Wert):
Ziehen wir nun diejenigen heraus, die nicht zum Muster passen:
Okay, die Strategie formt sich also: Generieren Sie den Bereich 0 bis 24 (wir werden uns später mit den fehlenden 17 befassen) und fügen Sie dann 75, 71 und 79 an den richtigen Stellen ein.
Wie können wir die Ausreißer einfügen? Pyth hat eine
.i
Nterleave-Funktion, die ex nimmt.[1,2,3]
und[4,5,6]
und führt zu[1,4,2,5,3,6]
. Wir müssen jedoch einige Platzhalter hinzufügen, da die Ausreißer offensichtlich weit voneinander entfernt sind. Stellen wir den Platzhalter mit X dar:Richtig, das untere Ausreißer-Array beginnt also mit vier
X
s. Können wir die Ausreißer so gruppieren, dass jeweils vierX
Sekunden vorangestellt sind, und sehen, was noch übrig ist?Jetzt machen wir noch eine wichtige Bemerkung: Da 79 ganz am Ende steht , kann eine beliebige Anzahl von
X
s davor stehen und eine beliebige Anzahl vonX
s, die ihm folgen! Dies liegt daran, dass Interleaving[1,2,3]
und[4,5,6,7,8,9]
Ergebnisse dazu[1,4,2,5,3,6,7,8,9]
führen, dass die zusätzlichen Elemente im zweiten Array am Ende enden. Da sie ohnehin entfernt werden, können wir dies sicher zulassen.Das heißt, wir können dies so normalisieren, dass jedem Ausreißer vier Sekunden vorausgehen
X
und 6 folgen:Großartig! Jetzt können wir einfach das Array nehmen
[75, 71, 79]
, vier Platzhalterwerte vor jedem Element und sechs nach jedem Element einfügen und es dann mit dem Bereich verschachteln0..24
.Aber warte, was ist passiert
17
? Denken Sie daran, dass in all diesen Beispielen die oberste Zeile 17 fehlt. Wir können die 17 nach dem Verschachteln einfach entfernen. aber dies lässt eine andere herrlich böse Möglichkeit offen. Sie haben es erraten - der Platzhalterwert, auf den wir uns bezogen haben,X
wird 17. Dies ermöglicht es uns, sowohl die fremden 17 als auch alle Platzhalterwerte auf einen Schlag zu entfernen.Schließlich! Hier ist der Code, mit dem dies implementiert wird:
quelle
JavaScript (ES6),
120 bis115 ByteDie Byteanzahl verwendet UTF-8. Es ist 88 Zeichen lang. Eingabe ist eine Zahl.
Prüfung
quelle
Python 3, 118 Bytes
quelle
i*"_"and
, um Platz zu vermeiden. Das hätte ich nicht gefunden.Netzhaut , 57 Bytes
Einfaches Transliterieren mit entsprechenden Zeichenbereichen und
0
Löschen auf jeder Ziffer.Probieren Sie es online aus. (Erste Zeile hinzugefügt, damit alle Testfälle zusammen ausgeführt werden können.)
Martin schlug auch dieses für die gleiche Punktzahl vor:
quelle
Julia, 138 Bytes
Dies ist eine Funktion, die eine Ganzzahl akzeptiert und eine Zeichenfolge zurückgibt.
Für jede Ziffer in der Eingabe in umgekehrter Reihenfolge erhalten wir das dieser Ziffer entsprechende Zeichen aus der entsprechenden Zeichenfolge. Kombinieren Sie dann die Zeichen und kehren Sie das Ergebnis um. Für alle Ziffern, die 0 sind, verwenden wir einfach die leere Zeichenfolge.
quelle
Julia, 84 Bytes
Probieren Sie es online aus!
quelle
JavaScript (ES6), 83 Zeichen, 110 Byte
quelle
0
s durch nichts ersetzt werden und dachte, sie würden ihn brechen!Perl 6 , 102 Bytes
Probieren Sie es online aus!
quelle
Ruby, 134 Bytes
Grundlegende Suche Dealie mit Modul. Es kann wahrscheinlich irgendwo optimiert werden, aber Ruby wird Strings nicht wie Javascript in ganze Zahlen zwingen, haha
quelle