Kannst du Emoji nicht sehen? Klicken Sie hier .
Sie simulieren einen Automaten. Es handelt sich um 56 verschiedene Emojis, die als zwei UTF-8-Ersatzzeichen dargestellt werden können: 🍅 (U + D83C U + DF45) bis 🍼 (U + D83C U + DF7C). In HTML können diese Emojis in UTF-16-Form als & # x1F345 bis & # x1F37C dargestellt werden . In Basis 10 hat das erste UTF-8-Zeichen den Wert 55356 . Der Wert des zweiten Zeichens reicht von 57157 bis 57212 . Hier ist ein CJam-Programm, das alle relevanten Emojis generiert. Um Verwirrung zu vermeiden, wird diese Herausforderung in Zeichen und nicht in Bytes gewertet . Einige Emojis bestehen aus 2 Zeichen, andere aus 3. Http://www.lettercount.com gibt Ihnen eine genaue Zählung für diese Herausforderung.
Preisgestaltung 💵💵💵
Es gibt 8 verschiedene Preiskategorien:
- $ 1.00: 🍅🍆🍇🍈🍉🍊🍋
- 1,50 $: 🍌🍍🍎🍏🍐🍑🍒
- $ 2,00: 🍓🍔🍕🍖🍗🍘🍙
- 2,50 USD: 🍚🍛🍜🍝🍞🍟🍠
- 3,00 USD: 🍡🍢🍣🍤🍥🍦🍧
- $ 3,50: 🍨🍩🍪🍫🍬🍭🍮
- 4,00 USD: 🍯🍰🍱🍲🍳🍴🍵
- $ 4,50: 🍶🍷🍸🍹🍺🍻🍼
Anzeigen des Automaten
Dies sieht der Benutzer, wenn das Programm startet und nachdem er einen Kauf getätigt hat. Sie können reguläre Zahlen anstelle von Emojizahlen verwenden, aber Emojizahlen haben den Vorteil, dass sie dieselbe Breite wie andere Emojis haben. Wenn Sie Emoji-Zahlen verwenden, können Sie 14 Zeichen von Ihrer Punktzahl abziehen , da Emoji-Zahlen jeweils 3 Zeichen umfassen.
1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🍡🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼
Wenn der Benutzer eingibt G5
, wählt er 🍳. BetretenE6
wählt 🍦.
Bargeld hinzufügen 💸💸💸
Um Geld hinzuzufügen, muss der Benutzer /
zunächst den Code für eine Münze oder eine Rechnung eingeben. Die Münzen sind (N) ickel (0,05 USD), (D) ime (0,10 USD) und (Q) uarter (0,25 USD). Die Rechnungen lauten (O) ne (1,00 USD), (F) ive (5,00 USD), (T) en (10,00 USD). Jedes Mal, wenn der Benutzer eine Rechnung oder Münze hinzufügt, sollte das Programm ausgeben Balance: [New Balance]
. Es kann jeweils nur eine Banknote oder Münze hinzugefügt werden. Hier ein Beispiel mit drei Eingabezeilen:
/D
Balance: $0.10
/Q
Balance: $0.35
/F
Balance: $5.35
Elemente auswählen
Der Benutzer wählt einen Artikel aus, indem er den Artikelcode wie B2
oder eingibt C3
. Wenn der Benutzer kein Geld hinzugefügt hat, sollte das Programm ausgeben Item Cost: [Cost of Item]
. Wenn der Benutzer Geld hinzugefügt hat, es aber nicht ausreicht, den Artikel zu kaufen, sollte die Ausgabe sein Insufficient Funds. Item Cost: [Cost of Item]
. Wenn der Benutzer genügend Geld hinzugefügt hat, sollte das Programm Folgendes ausgeben:Item at [Item Location] Purchased. Remaining Balance: [Balance - Cost of Item]
. Drucken Sie dann in einer eigenen Zeile das Emoji des gekauften Artikels aus. Drucken Sie dann den gesamten Verkaufsautomaten aus (siehe "Anzeigen des Verkaufsautomaten"), wobei der gekaufte Artikel durch 🚫 (U + D83D U + DEAB) Basis 10: (55357 57003) ersetzt wird.
Programm beenden
Wenn der Benutzer einen Artikel kauft, der sein Guthaben auf 0,00 USD senkt, sollte das Programm automatisch beendet werden. Wenn der Benutzer zu einem beliebigen Zeitpunkt "Fertig" eingibt, muss das Programm dem Benutzer alternativ den verbleibenden Restbetrag für die Änderung mitteilen. Wechselgeld darf nur in Nickels, Dimes und Vierteln ausgegeben werden und es muss die kleinstmögliche Menge an Münzen vorhanden sein. Wenn der verbleibende Saldo beispielsweise 1,45 US-Dollar beträgt, sollte die Ausgabe so sein QQQQQDD
.
Probelauf
(Eingabe beginnt mit "-")
1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🍡🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼
-E1
Item Cost: $3.00
-/F
Balance: $5.00
-E1
Item at E1 Purchased. Remaining Balance: $2.00
🍡
1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🚫🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼
-Done
QQQQQQQQ
Ungültige Codes
- Wenn die Eingabe mit beginnt,
/
aber keine gültige Geldeingabe ist, wird ausgegebenMoney not Accepted
. - Wenn es sich bei der Eingabe um einen bereits gekauften Artikel handelt, geben Sie ihn aus
Item out of stock
- Wenn die Eingabe eine Ziffern-Buchstaben-Kombination ist, die nicht im Bereich liegt (wie
A0
oderJ2
, geben Sie "Ungültiger Code" aus. - Für alle anderen ungültigen Eingaben geben Sie "Fehler" aus.
Bonus (-15%): Jam
Wenn ein Gegenstand verkauft wird, besteht eine 10% ige Wahrscheinlichkeit, dass sich der Automat verklemmt und der Gegenstand hängen bleibt. Output JAM!!!
einmal. In diesem Fall muss der Benutzer "punch" oder "kick" eingeben. Jedes Mal, wenn der Benutzer dies tut, besteht eine Wahrscheinlichkeit von 20%, dass sich der Gegenstand löst und wie gewohnt verkauft wird. Bis der Stau beseitigt ist, werden nur die Eingaben "Punch" und "Kick" erkannt. Alle anderen Eingaben machen nichts. Hier ist ein Beispiel:
-A4
Item at A4 purchased. Remaining Balance: $1.00
JAM!!!
-punch
-kick
-kick
-punch
-punch
🍚
(Der Stau wurde behoben. Setzen Sie den Vorgang wie gewohnt fort.)
Bonus (-10%): Ausweis
Wenn der Benutzer versucht, ein alkoholisches Getränk zu kaufen (alle Artikel in der letzten Reihe außer der Babyflasche), müssen Sie einen Altersnachweis verlangen. Dazu bitten Sie den Benutzer, zwei Zufallszahlen zwischen 13 und 19 (einschließlich) zu multiplizieren. Ausgabe ID required: [13-19]x[13-19] = ?
. Wenn der Benutzer richtig antwortet, kann der Kauf abgeschlossen werden. Wenn nicht, drucken Sie 🔞 (U + D83D U + DD1E) Basis 10: (55357 56606)
Alternative Herausforderung: Minecraft
Diese Herausforderung scheint in Minecraft möglich zu sein. Um eine Minecraft-Version dieses Programms erfolgreich zu erstellen, muss der Spieler
- Stellen Sie ein 8x7-Gitter zur Verfügung, um aus 56 einzigartigen Gegenständen auszuwählen
- In der Lage sein, Geld zum Guthaben hinzuzufügen. (Verwenden Sie möglicherweise verschiedene Steintypen für die oben beschriebenen Bezeichnungen.)
- Geben Sie dem Benutzer den Artikel, den er auswählt, wenn er genug "Geld" eingezahlt hat.
- Geben Sie dem Benutzer am Ende den entsprechenden Änderungsbetrag zurück.
Kompatibilitätsmodus
Ich kann nur zu Beginn des Programms Eingaben machen
- Machen Sie sich keine Sorgen, Sie können ein Programm erstellen, das alle Eingaben von vornherein übernimmt. Wenn Ihr Programm nach Auswertung aller Eingaben noch nicht beendet wurde, nehmen Sie an, dass am Ende "Done" aufgerufen wird. Wenn Sie diese Methode anwenden, haben Sie keinen Anspruch auf Boni.
Ich kann keine Emojis anzeigen / ausgeben
- Sie können Ihre Eingabe und Ausgabe kopieren und in dieses Stack-Snippet (oder hier ) einfügen . Es kann sowohl Unicode-Emojis als auch HTML-Codes für Emojis verstehen. Wenn Ihre Ausgabe auf dieser Seite korrekt aussieht, ist Ihr Programm erfolgreich. Versuchen Sie, einige Beispieleingaben / -ausgaben einzufügen, um zu sehen, wie sie aussehen.
function parse() {
var o = document.getElementById("output");
var text = document.getElementById("in").value;
o.innerHTML = text.replace(/\n/g,"<br/>").replace(/ /g," ");
twemoji.parse(o);
}
<head>
<script src="//twemoji.maxcdn.com/twemoji.min.js"></script>
</head>
<body>
<h1>Emoji to Image</h1>
<textarea id="in" rows="10" cols="50"></textarea>
<input type="submit" onclick="parse()">
<div id="output"></div>
</body>
Hier ist eine verkürzte Kompatibilitätsmodus-Version der Automatenanzeige, die Sie im Stapel-Snippet testen können:
1⃣2⃣3⃣4⃣5⃣...
A🍅🍆🍇🍈🍉...
B
...
Ich kann Emojis ausgeben, aber nicht an STDOUT.
- Scheinbar ist das Mac OS X Terminal das einzige, von dem bekannt ist, dass es Emojis ausgeben kann. Wenn Sie keine Emojis in Ihrem Terminal ausgeben können, stehen Ihnen folgende Optionen zur Verfügung
- Alle Ausgaben in eine Datei senden.
- Alle Ausgaben in einem Fenster anzeigen.
- Verwenden Sie die unter "Ich kann keine Emojis anzeigen / ausgeben" beschriebene Technik.
- Scheinbar ist das Mac OS X Terminal das einzige, von dem bekannt ist, dass es Emojis ausgeben kann. Wenn Sie keine Emojis in Ihrem Terminal ausgeben können, stehen Ihnen folgende Optionen zur Verfügung
$ can be replaced with your local currency
ist nicht sinnvoll, wenn Sie dann verlangen, dass die Münzen (N) ickel (D) imes und (Q) uarters sind. Ich schlage vor, Sie entfernen es, da es Verwirrung schafft.$
Symbol ist Teil des ASCII-Zeichensatzes, daher kann davon ausgegangen werden, dass nahezu alle Tastaturen und Sprachen damit umgehen können. Es ist das einzige Währungssymbol im 7-Bit-ASCII-Zeichensatz. Infolgedessen können andere Symbole wie das GBP-Symbol oder das EUR-Symbol € aufgrund inkompatibler Zeichenfolgencodierungen falsch wiedergegeben werden, was jedoch so gut wie nie der Fall ist$
.$
Symbol ist nicht nur das weltweit am häufigsten verwendete Währungssymbol (auch für viele Währungen, die nicht als Dollar bezeichnet werden), sondern hat auch in den meisten Programmiersprachen eine besondere Bedeutung. Daher wäre es eine ernsthafte Einschränkung, wenn es nicht auf der Tastatur verfügbar ist. Ich tippe dies auf meiner spanischen Tastatur und es ist tatsächlich einfacher, $ (Umschalt + 4) als € (Alt Gr + E) zu erhalten, so dass Sie sehen können, dass das letztere Symbol als nachträglicher Einfall hinzugefügt wurde.Antworten:
PHP, (1295-14) - 25% = 960,75 Zeichen
Alte Ergebnisse
1315135113611295989977Das hat Spaß gemacht und es ist die erste Antwort - ja.
Verkaufsautomaten erinnern mich an die 90er Jahre
goto
und für gekaufte Gegenstände wird der Space Invader👾
angezeigt. Die Maschine wird nach jedem Befehl neu gezeichnet.Ungolfed (irgendwie)
👾 Getestet unter OS X mit PHP 5.5 und 5.6 👾
Bearbeitungen
Done
und einige Saiten golfen.[A-Z][0-9]
) fürInvalid code
..=
in=
zutreffend.quelle
J5
sollte beim Eingeben die Meldung "Ungültiger Code" angezeigt werden.Invalid code
jetzt auch mehr Varianten . Es ist eine lustige Herausforderung - obwohl es viele Möglichkeiten gibt… 1K Zeichen sprechen für sich selbst… :)C # 6 (.Net Framework 4.6),
135613241304131113071238123512311220 Buchstaben - 14 Buchstaben (Emoji-Zahlen) - (15% Jam Bonus + 10% ID Bonus) =1017993978972.75969.75918915.75904.5 Buchstabenetwas ungolfed für die Verwendung in LinqPad 5 (C # 6). Verwenden Sie in F4 h = System.Console.
edit: danke für den (;;) hinweis;)
edit: Streik !! Besser als PHP ;-)
Bearbeiten: 24 Buchstaben entfernt. Noch etwas für PHP übrig.
Bearbeiten: 20 Buchstaben durch Umschalten von Dezimal auf Doppel entfernt.
Bearbeiten: 7 Buchstaben wurden entfernt, indem zu Emoji-Zahlen gewechselt wurde
Bearbeiten: Es wurden 4 Buchstaben entfernt, indem alles auf "double" anstatt auf "double" und "ints" gestellt wurde.
edit: 69 Buchstaben entfernt - toter Code gefunden o_O Bester Eintrag C #: D
edit: 3 Buchstaben entfernt - letzte if-else-Anweisung geändert
Bearbeiten: 4 Buchstaben entfernt - von Kurzschlussoperatoren (&& und ||) auf normale & und | umgestellt
edit: 11 Buchstaben entfernt - von h.WriteLine zu w () mit bedingter wörtlicher Zeichenkette gewechselt.
quelle
??
.