... Ordnungszahlen (oder Ordnungszahlen) sind Wörter, die Position oder Rang in einer sequentiellen Reihenfolge darstellen.
Aus Wikipedia .
Ihre Aufgabe ist es, mit Hilfe von 2 separaten Programmen (von denen aus 2 verschiedene Sprachen erstellt werden können) die Ordnungsreihenfolge von der ersten bis zur letzten auszugeben nth
. Sie geben second
im Gegensatz zu das vollständige Wort aus 2nd
.
Die Herausforderung der Ordnungszahlen wurde vor allem in diesem Beitrag angesprochen . Bei dieser Herausforderung sind Ordnungszahlen lediglich ein Hilfsmittel, um die nachstehend beschriebenen besonderen Bedingungen zu erfüllen.
Teil 1
Sie müssen ein Programm erstellen, das bei Eingabe von irgendetwasn
ausgeben muss .
n
wird immer eine positive ganze Zahl ungleich Null sein, die nicht größer als 999 ist.
Die gültige Ausgabe umfasst, ist aber nicht beschränkt auf :
- Beliebige Ausgabe nach
stdout
/stderr
/ etc - Erstellung von Dateien / Ordnern / etc
- Eine grafische Oberfläche oder Bilder jeglicher Art
Alles geht.
Teil 2
Sie müssen ein Programm erstellen, das die Ausgabe des Programms von Teil 1 verwendet, um eine Folge von Ordnungszahlen auszugeben, beginnend mit 1 (zuerst) bis zu dem, was n
in Teil 1 analysiert wurde.
Allgemeine Bedingungen:
- Die Gesamtzahl der Bytes für Teil 2 darf die Gesamtzahl der Bytes für Teil 1 (kleiner oder gleich) nicht überschreiten.
Ausgabebedingungen:
- Groß- und Kleinschreibung wird nicht berücksichtigt.
- Die Ausgabe darf nur die Ordnungszahl (nur die Zeichen aZ) und das Leerzeichen (Zeilenumbruch zulässig) enthalten.
- Kann an jede Quelle ausgegeben werden, solange sie während oder nach der Ausführung sichtbar ist.
- Das Programm muss nicht beendet werden, solange die Ausgabe korrekt ist.
- Für die Ausgabe ist keine Grammatik erforderlich, sie kann jedoch optional enthalten sein (Bindestriche, Kommas, "ands" usw.).
nine hundred ninety ninth
ist genauso akzeptabel wienine hundred and ninety-ninth
.
Beispielausgabe
Wo n
ist 8
FIRST SECOND THIRD FOURTH FIFTH SIXTH SEVENTH EIGHTH
Wertung
Die Hierarchie der Gewinnbedingungen lautet:
- Die niedrigste Anzahl von Bytes in Teil 1
- Die niedrigste Anzahl von Bytes in Teil 2
Entry #1 | Part 1 = 32 bytes, Part 2 = 22 bytes
Entry #2 | Part 1 = 31 bytes, part 2 = 30 bytes
Entry #2 wins - Part 1 contains 31 bytes vs 32 bytes
---
Entry #1 | Part 1 = 21 bytes, Part 2 = 33 bytes
Entry #2 | Part 1 = 80 bytes, Part 2 = 70 bytes
Entry #2 wins - Entry #1 disqualified (Part 2 contains more bytes than Part 1)
---
Entry #1 | Part 1 = 50 bytes, Part 2 = 49 bytes
Entry #2 | Part 1 = 50 bytes, Part 2 = 50 bytes
Entry #1 wins - Part 1 is equal, Part 2 contains 49 bytes vs 50 bytes
one hundred and eleventh
oderone hundred eleventh
?[30, 'second']
für32
dann p2 weniger Arbeit zu tun hat , wenn er ausgegeben hatte, nur32
.Antworten:
Vorschlaghammer 0.5.1 / Vorschlaghammer 0.5.1, 10 Byte
Programm 1 (10 Bytes):
Dekomprimiert in diese Wolfram Language-Funktion:
Programm 2 (7 Bytes):
Dekomprimiert in diese Wolfram Language-Funktion:
Probieren Sie es online!
quelle
R (mit
english
Paket), 16 Bytes / 16 BytesTeil 1, 16 Bytes
Teil 2, 16 Bytes
Benötigt das
english
Paket (das leider nicht auf TIO installiert ist).english::ordinal(f(22))
Ausgängefirst second third fourth fifth sixth seventh eighth ninth tenth eleventh twelfth thirteenth fourteenth fifteenth sixteenth seventeenth eighteenth nineteenth twentieth twenty first twenty second
.Natürlich könnte Teil 1 viel kürzer gemacht werden (3 Bytes:)
seq
, aber das würde der Einschränkung zuwiderlaufen, dass Teil 2 nicht länger als Teil 1 sein darf.quelle
Wolfram-Sprache (Mathematica) (beide Teile), 18 Bytes / 15 Bytes
-5 / -1 danke an lirtosiast
Teil 1, 18 Bytes
Teil 2, 15 Bytes
Probieren Sie es online!
Zwei Funktionen, die über den Rückgabewert ausgegeben werden.
quelle
Range@#|"Ordinal"&
ist kürzer undIntegerName
vektorisiert über das erste Argument. Ich denke jedoch, dass eine durch Leerzeichen getrennte Ausgabe erforderlich sein könnte.Python 3 (Teil 1 und Teil 2)
Leider ist Nodebox sehr wortreich ... es gibt nicht viel Platz zum Golfen.
Teil 1 76 Bytes
Teil 2 (verwendet die NodeBox- Bibliothek) 76 Byte
quelle
import en.number as n
spart Ihnen vier Bytes in jedem Teil.JavaScript (Node.js), 47 Bytes / 47 Bytes
Zwei Funktionen in derselben Node.js-Umgebung, die wie folgt aufgerufen werden
g(f(n))
. Verwendet das npm-Paket von Nummer zu Wort .Teil 1, 47 Bytes (40 Bytes + 7 Leerzeichen)
Teil 2, 47 Bytes
Probieren Sie es auf Runkit!
JavaScript (Node.js), 48 Bytes / 43 Bytes
Teil 1, 48 Bytes
Teil 2, 43 Bytes
Probieren Sie es auf Runkit!
quelle
Perl 5.10 / Common Lisp, 34/26 Bytes
Also, Common Lisp
format
hat dies als eingebaut, weil es natürlich tut.Programm 1 (34 Bytes)
Perl macht den ganzen Durchlauf. Der entsprechende Common-Lisp-Code (
(dotimes(i(read)) ...)
) ist länger als der viel Golfspieler Perl... for 1..<>
. Perl gibt eine Reihe von Common Lisp-Code aus.Programm 2 (26 Bytes)
Es ist eine REPL, abzüglich des P. Es liest die Standardeingabe und führt sie aus. Wird nicht beendet, aber die Regeln besagen ausdrücklich, dass das in Ordnung ist.
quelle