Emoji Verkaufsautomat

23

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 B2oder 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 ausgegeben Money 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 A0oder J2, 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,"&nbsp");
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:

   &#x31&#x20E3&#x32&#x20E3&#x33&#x20E3&#x34&#x20E3&#x35&#x20E3...
A&#x1F345&#x1F346&#x1F347&#x1F348&#x1F349...
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.
Geokavel
quelle
5
$ can be replaced with your local currencyist 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.
Level River St
@ Steveverrill Guter Punkt. Ich habe es geändert. Meine Frage ist, haben Tastaturen außerhalb der USA eine $ -Taste oder gibt es einen Code dafür?
Geokavel
Das $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 $.
Level River St
@steveverrill Ich weiß, dass sie damit umgehen können, aber gibt es eine physische Tastaturtaste dafür?
Geokavel
Meine britischen und spanischen Tastaturen haben es zusätzlich zu den relevanten lokalen Währungssymbolen, und ich denke, die anderen tun es auch. Das $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.
Level River St

Antworten:

8

PHP, (1295-14) - 25% = 960,75 Zeichen

Alte Ergebnisse 1315 1351 1361 1295 989 977

Das hat Spaß gemacht und es ist die erste Antwort - ja.

$i=[A=>[🍅,🍆,🍇,🍈,🍉,🍊,🍋],B=>[🍌,🍍,🍎,🍏,🍐,🍑,🍒],C=>[🍓,🍔,🍕,🍖,🍗,🍘,🍙],D=>[🍚,🍛,🍜,🍝,🍞,🍟,🍠],E=>[🍡,🍢,🍣,🍤,🍥,🍦,🍧],F=>[🍨,🍩,🍪,🍫,🍬,🍭,🍮],G=>[🍯,🍰,🍱,🍲,🍳,🍴,🍵],H=>[🍶,🍷,🍸,🍹,🍺,🍻,🍼]];$p=[A=>1,B=>1.5,C=>2,D=>2.5,E=>3,F=>3.5,G=>4,H=>4.5];$v=[N=>.05,D=>0.1,Q=>.25,O=>1,F=>5,T=>10];a:$m='';$w=$x=0;$q=$c[0];$r=$c[1];$f=fgets;$n=rand;$u=number_format;if('Done'==$c&&$e=1)foreach([Q,D,N]as$_)while($b&&round($b-$v[$_],2)>=0&&$m.=$_)$b-=$v[$_];elseif('/'==$q){$v[$r]?$b+=$v[$r]:$m="Money not accepted
";$m.="Balance: $".$u($b,2);}elseif(in_array($q,range(A,Z))){if(0<$r&&8>$r--&&($_=$p[$q])){$b&&$b<$_?$m="Insufficient funds. ":0;if($b<$_)$m.="Item cost: $".$u($_,2);elseif(👾==$i[$q][$r])$m="Item out of stock.";else{$t=0;if(H==$q&&$r<6){$t=$n(13,19);$s=$n(13,19);echo"ID required: {$t}x$s = ?
";if($f(STDIN)!=$t*$s)$m=🔞;else$t=0;}if(!$t){$b-=$_;if(1>$n(0,9)){$w=1;}$x=$i[$q][$r];$m="Item at $c purchased. Remaining balance: $".$u($b,2).($w?"":"
$x");$i[$q][$r]=👾;if(!$b)$e=1;}}}else$m="Invalid code";}if($c&&!$m&&!$e)$m=Error;system(clear);echo"  1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣";foreach($i as$k=>$_){echo"
$k ";foreach($_ as$_)echo"$_ ";}echo"
$m
";if($w){echo"JAM!!!
";for(;$c!=kick&&$c!=punch||7>$n(0,9);$c=trim($f(STDIN)));echo"$x
";}$e?exit:$c=trim($f(STDIN));goto a;

Verkaufsautomaten erinnern mich an die 90er Jahre gotound für gekaufte Gegenstände wird der Space Invader 👾 angezeigt. Die Maschine wird nach jedem Befehl neu gezeichnet.

Ungolfed (irgendwie)

$i=[A=>[🍅,🍆,🍇,🍈,🍉,🍊,🍋],B=>[🍌,🍍,🍎,🍏,🍐,🍑,🍒],C=>[🍓,🍔,🍕,🍖,🍗,🍘,🍙],D=>[🍚,🍛,🍜,🍝,🍞,🍟,🍠],E=>[🍡,🍢,🍣,🍤,🍥,🍦,🍧],F=>[🍨,🍩,🍪,🍫,🍬,🍭,🍮],G=>[🍯,🍰,🍱,🍲,🍳,🍴,🍵],H=>[🍶,🍷,🍸,🍹,🍺,🍻,🍼]];
$p=[A=>1,B=>1.5,C=>2,D=>2.5,E=>3,F=>3.5,G=>4,H=>4.5];
$v=[N=>.05,D=>0.1,Q=>.25,O=>1,F=>5,T=>10];

a:
$m='';
$w=$x=0;
$q=$c[0];
$r=$c[1];
$f=fgets;
$n=rand;
$u=number_format;

if('Done'==$c&&$e=1)
    foreach([Q,D,N]as$_)
        while($b&&round($b-$v[$_],2)>=0&&$m.=$_)
            $b-=$v[$_];
elseif('/'==$q){
    $v[$r]?$b+=$v[$r]:$m="Money not accepted
";
    $m.="Balance: $".$u($b,2);
}elseif(in_array($q,range(A,Z))){
    if(0<$r&&8>$r--&&($_=$p[$q])){
        $b&&$b<$_?$m="Insufficient funds. ":0;
        if($b<$_)$m.="Item cost: $".$u($_,2);
            elseif(👾==$i[$q][$r])
                $m="Item out of stock.";
            else{
                $t=0;
                if(H==$q&&$r<6){
                    $t=$n(13,19);
                    $s=$n(13,19);
                    echo"ID required: {$t}x$s = ?
";
                    if($f(STDIN)!=$t*$s)
                        $m=🔞;
                    else
                        $t=0;
                }
                if(!$t){
                    $b-=$_;
                    if(1>$n(0,9)){
                        $w=1;
                    }
                    $x=$i[$q][$r];
                    $m="Item at $c purchased. Remaining balance: $".$u($b,2).($w?"":"
$x");
                    $i[$q][$r]=👾;
                    if(!$b)$e=1;
                }
            }
    }else
        $m="Invalid code";
}

if($c&&!$m&&!$e)$m=Error;

system(clear);
echo"  1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣";
foreach($i as$k=>$_){
    echo"
$k ";
    foreach($_ as$_)
        echo"$_ ";
}
echo"
$m
";

if($w){
    echo"JAM!!!
";
    for(;$c!=kick&&$c!=punch||7>$n(0,9);$c=trim($f(STDIN)));
    echo"$x
";
}

$e?exit:$c=trim($f(STDIN));
goto a;

👾 Getestet unter OS X mit PHP 5.5 und 5.6 👾


Bearbeitungen

  • 12 Bytes hinzugefügt . Fester Ausgang Doneund einige Saiten golfen.
  • 306 Bytes hinzugefügt . Ein oder zwei Fehler behoben und Unterstützung für die Boni hinzugefügt. Mit den Boni ist es jetzt fast 15 Bytes kürzer.
  • 66 Bytes hinzugefügt . Musste das Geld anders formatieren, musste auch mehr Werte akzeptieren ( [A-Z][0-9]) für Invalid code.
  • 10 Bytes gespeichert . Fand ein Leerzeichen und verwandelte einige .=in =zutreffend.
  • Gespeicherte 36 Bytes aufgrund einiger refactoring.
  • Einsparung von 20 Bytes durch Refactoring einiger Schleifen und Zuweisungen.
insertusernamehere
quelle
Wow, das war sehr lustig zu spielen! Das einzige Problem, das mir aufgefallen ist: Sie müssen Preise wie 3 und 3,5 in 3,00 $ und 3,50 $ formatieren.
Geokavel
Außerdem J5sollte beim Eingeben die Meldung "Ungültiger Code" angezeigt werden.
Geokavel
@geokavel Danke für dein Feedback. Ich habe das richtige Geldformat hinzugefügt und es akzeptiert Invalid codejetzt auch mehr Varianten . Es ist eine lustige Herausforderung - obwohl es viele Möglichkeiten gibt… 1K Zeichen sprechen für sich selbst… :)
insertusernamehere
Herzlichen Glückwunsch, mit knapper Not sind Sie der Gewinner! Vielen Dank an beide Spieler, die es verdient haben, ihre Konkurrenten zu sein und sich gegenseitig zu übertreiben!
Geokavel
@geokavel Es war eine lustige Herausforderung und ein schönes Tischtennis zwischen Stephan und mir. Wenn jemand in Zukunft eine kürzere Lösung findet, bin ich dabei. ;)
insertusernamehere
5

C # 6 (.Net Framework 4.6), 1356 1324 1304 1311 1307 1238 1235 1231 1220 Buchstaben - 14 Buchstaben (Emoji-Zahlen) - (15% Jam Bonus + 10% ID Bonus) = 1017 993 978 972.75 969.75 918 915.75 904.5 Buchstaben

using h=System.Console;class c{static void Main(){double b=0,z,p,x=0,i=57157,j,n,r,c,m;var a=1==0;var d=new System.Collections.Hashtable();for(;i<57213;)d.Add(x++,""+(char)55356+(char)i++);for(var e=new System.Random();;){for(w("  1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣"),x=0;x<8;x++,w(""))for(h.Write((char)('A'+x)),i=0;i<7;)h.Write(" "+d[x*7+i++]);for(;;){var k=h.ReadLine();if(k[0]==47){var l=k[1];z=b;b+=l=='N'?.05:l=='D'?.1:l=='Q'?.25:l=='O'?1:l=='F'?5:l=='T'?10:0;a=a|z!=b;w(z!=b?$"Balance {b:0.00}":"Money not Accepted");}else{if(k=="Done"){for(;b/.25>=1;b-=.25)h.Write("Q");for(;b/.1>=1;b-=.1)h.Write("D");for(;b/.05>=1;b-=.05)h.Write("N");return;}r=k[0]-65;c=k[1]-49;if(r<0|r>7|c<0|c>6)w("Invalid code");else{p=1+r/2;if(!a|p>b)w($"{(a&p>b?"Insufficient Funds. ":"")}Item Cost: ${p:0.00}");else{m=r*7+c;if(d[m]=="🚫")w("Item out of stock");else{if(r>6&c<6){j=e.Next(13,20);n=e.Next(13,20);w($"ID required: {j}x{n} = ?");if(int.Parse(h.ReadLine())!=j*n){w("🔞");break;}}b-=p;w($"Item at {k} Purchased. Remaining Balance: ${b:0.00}");if(e.Next(10)==1)for(w("Jam!!!");;){var f=h.ReadLine();if((f=="punch"|f=="kick")&e.Next(10)<2)break;}w(""+d[m]);d[m]="🚫";if(b==0)return;break;}}}}}}}static void w(string s)=>h.WriteLine(s);}

etwas ungolfed für die Verwendung in LinqPad 5 (C # 6). Verwenden Sie in F4 h = System.Console.

void Main()
{
    double b=0,z,p,x=0,i=57157,j,n,r,c,m;
    var a = 1==0;
    var d = new Hashtable();
    for (; i < 57213;) d.Add(x++, ""+(char)55356 + (char)i++);
    for (var e = new Random(); ;)
    {
        for (w("  1️⃣ 2️⃣ 3️⃣ 4️⃣ 5️⃣ 6️⃣ 7️⃣"), x = 0; x < 8; x++, w(""))
            for (h.Write((char)('A' + x)), i = 0; i < 7;)
                h.Write(" " + d[x * 7 + i++]);

        for (; ;)
        {
            var k = h.ReadLine();
            if (k[0] == 47)
            {
                var l = k[1];
                z = b;
                b += l == 'N' ? .05 : l == 'D' ? .1 : l == 'Q' ? .25 : l == 'O' ? 1 : l == 'F' ? 5 : l == 'T' ? 10 : 0;
                a = a|z!=b;
                w(z != b ? $"Balance {b:0.00}" : "Money not Accepted");
            }
            else
            {
                if (k == "Done")
                {
                    for (; b / .25 >= 1; b -= .25) h.Write("Q");
                    for (; b / .1 >= 1; b -= .1) h.Write("D");
                    for (; b / .05 >= 1; b -= .05) h.Write("N");
                    return;
                }
                r = k[0] - 65;
                c = k[1] - 49;
                if(r<0|r>7|c<0|c>6)w("Invalid code");
                else
                {
                    p = 1 + r / 2;
                    if (!a | p > b) w($"{(a&p>b?"Insufficient Funds. ":"")}Item Cost: ${p:0.00}");
                    else
                    {
                        m = r * 7 + c;
                        if (d[m] == "🚫")
                            w("Item out of stock");
                        else
                        {
                            if (r > 6 & c < 6)
                            {
                                j = e.Next(13, 20);
                                n = e.Next(13, 20);
                                w($"ID required: {j}x{n} = ?");
                                if (int.Parse(h.ReadLine()) != j * n)
                                {
                                    w("🔞");
                                    break;
                                }
                            }

                            b -= p;
                            w($"Item at {k} Purchased. Remaining Balance: ${b:0.00}");
                            if (e.Next(10) == 1)
                                for (w("Jam!!!"); ;)
                                {
                                    var f = h.ReadLine();
                                    if ((f == "punch" | f == "kick") & e.Next(10) < 2)
                                        break;
                                }
                            w(""+d[m]);
                            d[m] = "🚫";
                            if (b == 0) return;
                            break;
                        }
                    }
                }
            }
        }
    }
}

void w(string s)=>h.WriteLine(s);

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.

Stephan Schinkel
quelle
Sieht gut aus. Ich konnte es hier mit statischen Eingaben testen . Kann ich es online oder auf einem Mac mit dynamischer Eingabe testen?
Geokavel
Sie können es mit dynamischer Eingabe testen hier , obwohl die Emojis zeigen wie ??.
Geokavel
Das einzige Problem, das ich bei Ihnen festgestellt habe, ist, dass "Ungültiger Code" nur für eine Zahlenkombination angezeigt werden sollte, die sich nicht in Reichweite befindet. Alle nicht angegebenen Fehler sollten "Fehler" ausgeben.
Geokavel
auf meinem weg @insertusernamehere: D
Stephan Schinkel
hey .... ich habe es unter PHP :) @insertusernamehere
Stephan Schinkel