Die Franzosen buchstabieren Zahlen auf besondere Weise.
- 1-16 sind "normal"
- 17-19 sind 10 + 7 buchstabiert . 10 + 8, 10 + 9 .
- 20-69 sind "normal" (OK, OK! Nicht wirklich, aber sie sind in dieser Herausforderung)
- 70-79 sind 60 + 10, 60 + 11 ... 60 + 10 + 7, 60 + 10 + 8, 60 + 10 + 9 .
- 80-99 sind 4 · 20, 4 · 20 + 1, 4 · 20 + 2 ... 4 · 20 + 16, 4 · 20 + 10 + 7, 4 · 20 + 10 + 8, 4 · 20 + 10 + 9
Herausforderung:
Nehmen Sie eine positive ganze Zahl im Bereich [1.100] und geben Sie sie auf die "französische Art" aus. Sie müssen es genau so ausgeben, wie es unten gezeigt ist, mit *
und +
, so 97
ist es 4*20+10+7
nicht [4 20 10 7]
oder mit etwas anderem.
Testfälle:
1 - 1
.. - ..
16 - 16
17 - 10+7
18 - 10+8
19 - 10+9
20 - 20
21 - 21
.. - ..
69 - 69
70 - 60+10
71 - 60+11
72 - 60+12
77 - 60+10+7
78 - 60+10+8
79 - 60+10+9
80 - 4*20
81 - 4*20+1
82 - 4*20+2
.. - ..
90 - 4*20+10
91 - 4*20+11
96 - 4*20+16
97 - 4*20+10+7
98 - 4*20+10+8
99 - 4*20+10+9
100 - 100
code-golf
number
kolmogorov-complexity
Stewie Griffin
quelle
quelle
16
zu10+7
oben. (Auf Englisch passiert es zwischen12
und10+3
, mit etwas mehr morphologischer Verkleidung.) Ich war immer ein bisschen überfordert von der Tatsache, dass verschiedene Sprachen diesen Übergang in unterschiedlicher Anzahl machen.22
wenn "dix-huit" ist10+8
?Antworten:
Excel,
153149 BytesIch bin sicher, das könnte besser sein, ich hatte Mühe, einen effizienten Weg zu finden, um # 80 zu erklären.
edit: Konsolidiert die "Normal" -Fälle besser, um 4 Bytes zu sparen. # 80 ist immer noch beschissen.
Ich kann hier keine konkrete Antwort finden, da ich nicht sicher bin, ob die Regeln von Code-Golf-TBH eingehalten werden. Kann ich in Excel mehrere Zellen verwenden und die Byteanzahl jeder Zelle hinzufügen?
dh Für eine Eingabe in Zelle A1
A2: 11 Bytes
A3 (Ergebnis): 125 Bytes
Für insgesamt 136?
quelle
IF(A1=80,,IF(MOD(A1,20)>16,"+10+"&MOD(A1,20)-10,"+"&MOD(A1,20)))
zuIFS(A1=80,,MOD(A1,20)>16,"+10+"&MOD(A1,20)-10,1,"+"&MOD(A1,20))
)
am Ende überspringen , können Sie das gleiche in Excel tun? Sie können also 5 "Bytes" sparen (es gibt wirklich UCS2-Zeichen, wenn Sie also Byte == Oktett sagen, müssen Sie es doppelt zählen). Und Sie müssen die,
in ändern;
Netzhaut ,
5248 Bytes4 Bytes gespart dank Neil
Probieren Sie es online! oder überprüfe alle Eingaben (von Neil bereitgestellt)
Erläuterung
Zuerst behandeln wir die Übersetzung von 70, 80 und 90. In diesen ersten drei Schritten wird eine 7 am Anfang durch ein anderes Zeichen ersetzt
60+1
. Ebenso9
wird ersetzt durch81
und8
durch4*20+1
. Das Ersetzen von9
ändert es im Wesentlichen in "achtzig" und so, dass das8
dann durch das nächste Ersetzen gehandhabt wird, was das4*20+1
zweimalige Schreiben von Bytes erspart .Dies behandelt die Fälle von
17
,18
und19
durch Ersetzen von1
in each durch10+
.Schließlich sollte es nie ein
+0
am Ende geben, also löschen Sie es, wenn es da ist.quelle
7-9
, aber ich glaube nicht, dass Sie diesen Lookbehind brauchen: Probieren Sie es online aus!$1
es genauso lang ist wie?=
.Python 2 , 98 Bytes
Probieren Sie es online!
quelle
JavaScript (ES6),
73-71ByteBonusversion, die die Zahlen so ausgibt, wie sie tatsächlich geschrieben sind, für zusätzliche 2 Bytes:
quelle
23
soll zum Beispiel ausgeben23
, nicht20+3
.(m=n%20)
m
es0
imf(n-n%20)
Anruf auf zurückgesetzt wird. (Es ist eine globale Variable)n<70|n>99
zun%100<70
. Könnten Sie auch einen Test-Compiler hinzufügen?R, 110 Bytes
quelle
(i-r)/10
stattfloor(i/10)
. Undi>15
sollte seini>16
.PHP, 99 Bytes (Ich möchte glücklich Version sein)
ein gerader Port von ETHproductions 'JS , 4 Bytes Golf. Druckt die vom OP angeforderten Nummern.
Nervenzusammenbruch
Ich möchte die richtige Version sein,
11498 BytesEin neuer Ansatz, der von ETHproductions inspiriert ist , druckt die Zahlen so aus, wie sie buchstabiert wurden.
versuche es online .
Nervenzusammenbruch
quelle
Python 2,
130108 Bytes22 Bytes gespart dank @mathjunkie
Probieren Sie es online!
quelle
f=
weil Sie es im Lambda verwendet haben.Batch,
220217 BytesÜbernimmt die Eingabe für STDIN. Das Generieren und Entfernen des
+
Leaders spart 1 Byte gegenüber dem Sondergehäuse 80. Bearbeiten: 3 Byte dank @ ConorO'Brien gespeichert.quelle
@echo off
indem Sie alle Anweisungen mit Ausnahme der Schleifenanweisung mit@
Jelly , 55 Bytes
Probieren Sie es online! oder sehen Sie sich eine Testsuite an
Kein Zweifel, es gibt einen kürzeren Weg!
Wie?
quelle
Pyth,
6156 BytesOnline testen!
Vielen Dank an Leaky Nun für eine 5-Byte-Verbesserung!
Erläuterung:
quelle
*-Q100>Q69
→}/QTr6T
@]b}17 19
→}b}17 19
+"10+"eb
→j\+,Teb
Python3, 127 Bytes
Jedes Array-Element enthält seine Darstellung:
Der Code erzeugt eigentlich keine Funktion, nur ein Array - ich weiß nicht, ob das erlaubt ist. Ansonsten müsste ich diese 139 Bytes durch Addition machen
f=[...].__getitem__
.quelle
f=
, da unbenannte Funktionen (dh Ausdrücke, die für die übergebene Funktion ausgewertet werden) in Ordnung sind, es sei denn, der Name wird für so etwas wie eine Rekursion benötigt.Java 7,
9796109 Bytes+13 Bytes für Fehlerbehebungsfall
80
.. :(Erläuterung:
Testcode:
Probieren Sie es hier aus.
quelle