Die Bewohner von Flapus verwenden ein Zahlensystem zur Basis 8. Die Zahlen sind:
0 - Kuzla
1 - Ponara
2 - Boqkel
3 - Colopee
4 - Vruenat
5 - Foham
6 - Stikty
7 - Kricola
Bei Zahlen über 7 steht der vollständige Name der letzten Ziffer an erster Stelle, gefolgt vom Apostroph und den ersten Zeichen der anderen Ziffer (n) bis einschließlich des ersten Vokals:
11 - Ponara (1) po (1)
13 - Colopee (3) po (1)
64 - Vruenat'sti
55 - Foham'fo
47 - Kricola'vru
Wenn die Zahlen steigen, bleibt die Formel gleich - die letzte Ziffer des vollständigen Namens steht an erster Stelle, gefolgt von einem Apostroph und den ersten Zeichen der anderen Ziffern bis einschließlich des ersten Vokals. Beachten Sie, dass die Reihenfolge bis auf die letzte Ziffer (erstes Wort) gleich bleibt.
123 - Colopee (3) 'po (1) bo (2)
205 - Foham (5)' bo (2) ku (0)
1123 - Colopee'popobo
7654 - Vruenat'kristifo
Die Ausnahme von der Regel gilt für Zahlen, die mit 0 enden. Hier beginnt das Wort mit Ku und wird mit den ersten Buchstaben der anderen Ziffern bis einschließlich des ersten Vokals abgeschlossen. Es wird kein Apostroph verwendet.
10 - Kupo
70 - Kukri
350 - Kucofo
630 - Kustico
1000 - Kupokuku
Herausforderung
Schreiben Sie ein Programm oder eine Funktion, die eine gültige Basis-8-Zahl akzeptiert und das gesprochene Äquivalent ausgibt. Sie können davon ausgehen, dass Sie immer eine gültige Nummer erhalten. Nachgestellte Leerzeichen / einzelne Zeilenumbrüche nach Ihrer Antwort sind in Ordnung. Das erste Zeichen muss gemäß den Beispielen in Großbuchstaben geschrieben werden.
Das ist Code-Golf . Kürzester Code in Bytes gewinnt. Es gelten Standardlücken. Antworten, deren Länge konvertiert und zusätzlich in Flapussisch übermittelt wird, erhalten zusätzliche Cookies.
Testfälle
0 -> Kuzla
1 -> Ponara
2 -> Boqkel
3 -> Colopee
4 -> Vruenat
5 -> Foham
6 -> Stikty
7 -> Kricola
10 -> Kupo
11 -> Ponara'po
23 -> Colopee'bo
56 - > Stikty'fo
70 -> Kukri
100 -> Kupoku
222 -> Boqkel'bobo
2345 -> Foham'bocovru
Antworten:
Pyth, 117 Bytes (Kricola'popo)
Handtranspilierter pythonischer Pseudocode:
quelle
if ... else
Ihrefor
Schleife in einemap
Operation umwandeln und dann einige geringfügige Änderungen vornehmen. Hier ist was ich habe. Ich möchte Sie auch darauf aufmerksam machen,."
welche Zeichenfolgen für komprimierte Zeichenfolgen verwendet werden können.Retina , Colopee'pokri,
165157143127123 BytesDer Zeilenvorschub am Ende ist signifikant.
Probieren Sie es online!
Erläuterung
Wir beginnen damit, die nachgestellte Ziffer nach vorne zu bringen und ein Apostroph danach einzufügen. Beachten Sie, dass einstellige Zahlen unverändert bleiben, da der reguläre Ausdruck nicht übereinstimmt. Daher erhalten diese überhaupt keinen Apostroph.
Dies ersetzt jede Ziffer mit ihrem vollständigen Namen, unabhängig davon, wo sie angezeigt wird.
Dies verkürzt alle Ziffernnamen, die nach einem Apostroph erscheinen. Beachten Sie, dass
iou
in einem stelligen Namen nur die Vokale zuerst vorkommen. Wir überprüfen daher eine Position, die direkt nach einer dieser und nach einem Apostroph liegt, und setzen dann alle Kleinbuchstaben, die auf diese Position folgen, in Übereinstimmung (und entfernen sie). Da wir die Ziffernnamen in Groß- und Kleinschreibung eingegeben haben, stoppt dies vor der nächsten Ziffer.Hierbei werden alle Großbuchstaben durch Transliteration
L
in Kleinbuchstaben umgewandeltl
, sofern sie in einer Übereinstimmung gefunden werden, die mit'
( beginnt , um die führende Hauptstadt unangetastet zu lassen) beginnt .Jetzt müssen wir nur noch ein Vielfaches von (Oktal) 10 richtig verarbeiten. In diesem Fall beginnen wir mit einem Ergebnis, mit
Kuzla'
dem wirKu
stattdessen beginnen möchten . Also entfernen wir einfach alle Vorkommen vonzla'
.quelle
JavaScript (ES6), 171
Prüfung
quelle
Java (1.8) - Vruenat'fobo (
486340 Bytes)Gerade als ich dachte, ich könnte das nicht mehr Golf spielen, fand ich weitere 33 Bytes! Sehr zufrieden! Die größten Einsparungen ergaben sich durch den Wechsel zu Zeichenfeldern (in Groß- / Kleinbuchstaben) und die Wiederverwendung des Eingabezeichenfolgenfelds für die Wörter.
Entdecken Sie jede Menge Golf-Tricks bis unter 400! Theoretisch könnte ich dies noch weiter reduzieren, da ich sagte, dass eine Funktion in den Regeln in Ordnung wäre, während dies ein vollständiges Programm ist.
Aktualisiert Mit Martin Büttners Ansatz habe ich neu gestaltet, um stattdessen Regex zu verwenden. Es ist gelungen, weitere 10 Bytes zu sparen! Vielen Dank, Martin.
Ungolfed
quelle
interface F
die öffentliche Deklaration für die Hauptmethode verwenden und entfernen. Sie können auch das Leerzeichen inString[] x
und in entfernen.substring(0, v+1)
."Kuzla,Ponara,Boqkel,Colopee,Vruenat,Foham,Stikty,Kricola".split(",")
ist 70 Bytes, während das Inline-Array 74 ist.Python (3.5)
225222217202 BytesEine funktionierende Lösung mit Listenverständnis in Python
Erläuterung
Gewinnen Sie 3 Bytes mit der Split - Version (Vorgängerversion:
d="Kuzla","Ponara",...
)Initialisierung des Ergebnisses in Abhängigkeit von der letzten Ziffer
Ändern Sie die d-Liste, um die ersten 2 oder 3 Zeichen beizubehalten und in Kleinbuchstaben zu schreiben
Katze die Schnur
quelle
Javascript ES6,
231228225222204 BytesDank Neil eine Menge Bytes gespeichert.
quelle
[...s]
statts.split``
;b=b==c[0]?"Ku":b+"'"
stattif(b==c[0]){b="Ku"}else b+="'"
; ähnlich für dieif(a.length)
(nur0
für daselse
Teil verwenden);a.map(d=>b+=c[d].match...)
anstatt mitfor
und herumzuspielenshift
. Ich denke das sind schon 29 Bytes gespart.[iou]
als "Vokal" -Klasse verwenden müssen.F #,
364288250 Bytes (Kubofo)Gibt eine Funktion zurück, die eine Ganzzahl annimmt und ihr Flapus-Äquivalent zurückgibt. = D
quelle
Python 3 -
181177 Bytes (Ponara'bosti)Hüten Sie sich vor dem erstaunlichsten Nutzen, den
pow
Sie jemals in Ihrem ganzen Leben gesehen haben werden.u**v
ist gleichbedeutend mit dem booleschen Kontext,u|(not v)
der zuvor auf den netten~v+2|u
Ausdruck gesetzt wurde!quelle