เครื่องจำหน่ายอีโมจิ


23

ไม่เห็นอิโมจิใช่ไหม คลิกที่นี่

คุณจะจำลองเครื่องหยอดเหรียญ ไอเท็มต่าง ๆ มีอิโมจิ 56 แบบซึ่งสามารถแสดงเป็นอักขระ UTF-8 ตัวแทนสองตัวจาก: 🍅 (U + D83C U + DF45) ถึง🍼 (U + D83C U + DF7C) ใน HTML อีโมจิเหล่านี้สามารถแสดงใน UTF-16 รูปแบบเป็น& # x1F345ผ่าน& # x1F37C ในฐาน 10 คนแรก UTF-8 ตัวละครที่มีค่า55356 ค่าของตัวละครที่สองช่วงจาก57157ที่จะ57212 นี่คือโปรแกรม CJam ที่สร้างอิโมจิที่เกี่ยวข้องทั้งหมด เพื่อหลีกเลี่ยงความสับสนกับความท้าทายนี้จะได้รับคะแนนในตัวอักษรไม่ไบต์ อิโมจิบางตัวมี 2 ตัวอักษรบางตัวเป็น 3 ตัวhttp://www.lettercount.comจะให้การนับที่แม่นยำสำหรับความท้าทายนี้

ราคา💵💵💵

มี 8 ประเภทราคาที่แตกต่างกัน:

  • $ 1.00: 🍅🍆🍇🍈🍉🍊🍋
  • $ 1.50: 🍌🍍🍎🍏🍐🍑🍒
  • $ 2.00: 🍓🍔🍕🍖🍗🍘🍙
  • $ 2.50: 🍚🍛🍜🍝🍞🍟🍠
  • $ 3.00: 🍡🍢🍣🍤🍥🍦🍧
  • $ 3.50: 🍨🍩🍪🍫🍬🍭🍮
  • $ 4.00: 🍯🍰🍱🍲🍳🍴🍵
  • $ 4.50: 🍶🍷🍸🍹🍺🍻🍼

การแสดงเครื่องขายแสตมป์อัตโนมัติ

นี่คือสิ่งที่ผู้ใช้เห็นเมื่อโปรแกรมเริ่มต้นและหลังจากทำการซื้อ คุณสามารถใช้ตัวเลขปกติแทนตัวเลขอีโมจิ แต่ตัวเลขอีโมจิมีข้อดีคือความกว้างเท่ากับอิโมจิอื่น ๆ หากคุณใช้หมายเลขอีโมจิคุณสามารถลบ14 ตัวอักษรจากคะแนนของคุณเพราะหมายเลขอีโมจิมี 3 ตัวอักษรแต่ละตัว

  1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🍡🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼 

หากผู้ใช้เข้าสู่G5ที่เลือก🍳 กำลังเข้าสู่การE6เลือก🍦

เพิ่มเงินสด💸💸💸

ในการเพิ่มเงินผู้ใช้ควรป้อน/รหัสสำหรับเหรียญหรือบิล เหรียญคือ (N) ickel ($ 0.05), (D) ime ($ 0.10) และ (Q) uarter ($ 0.25) ธนบัตรคือ (O) ne ($ 1.00), (F) ive ($ 5.00), (T) en ($ 10.00) Balance: [New Balance]ทุกครั้งที่ผู้ใช้เพิ่มการเรียกเก็บเงินหรือเหรียญโปรแกรมควรเอาท์พุท สามารถเพิ่มบิลหรือเหรียญได้เพียงครั้งเดียวในแต่ละครั้งนี่คือตัวอย่างที่มีอินพุตสามบรรทัด:

/D
Balance: $0.10
/Q
Balance: $0.35
/F
Balance: $5.35

การเลือกรายการ

ผู้ใช้เลือกรายการโดยการป้อนรหัสรายการที่เหมือนหรือB2 C3หากผู้ใช้ยังไม่ได้เพิ่มเงินใด ๆ Item Cost: [Cost of Item]โปรแกรมควรเอาท์พุท หากผู้ใช้มีการเพิ่มเงิน Insufficient Funds. Item Cost: [Cost of Item]แต่มันไม่เพียงพอที่จะซื้อสินค้าที่ส่งออกที่ควรจะเป็น Item at [Item Location] Purchased. Remaining Balance: [Balance - Cost of Item]หากผู้ใช้ไม่เพิ่มเงินพอโปรแกรมควรเอาท์พุท: จากนั้นในบรรทัดของตัวเองให้พิมพ์อิโมจิของรายการที่ซื้อ จากนั้นพิมพ์เครื่องจำหน่ายทั้งหมด (ดู "การแสดงเครื่องจำหน่ายสินค้าอัตโนมัติ") ด้วยรายการที่ซื้อมาแทนที่ด้วย🚫 (U + D83D U + DEAB) ฐาน 10: (55357 57003)

จบโปรแกรม

หากผู้ใช้ซื้อไอเท็มที่ทำให้ยอดคงเหลือของเขา / เธอลดลงเหลือ $ 0.00 โปรแกรมควรจะยุติโดยอัตโนมัติ หรือหากผู้ใช้ป้อน "เสร็จสิ้น" เมื่อใดก็ได้โปรแกรมจะต้องให้ยอดคงเหลือในการเปลี่ยนแปลงแก่ผู้ใช้ การเปลี่ยนแปลงจะต้องเป็นเพียง Nickels, Dimes และ Quarters เท่านั้นและจะต้องมีจำนวนเหรียญน้อยที่สุดเท่าที่จะเป็นไปได้ ตัวอย่างเช่นถ้าเหลือ $ 1.45 QQQQQDDผลผลิตที่ควรจะเป็น

เรียกใช้ตัวอย่าง

(อินพุตเริ่มต้นด้วย "-")

  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

รหัสไม่ถูกต้อง

  • ถ้าใส่เริ่มต้นด้วยแต่ไม่ได้เป็นที่ถูกต้องป้อนข้อมูลเงินเอาท์พุท/ Money not Accepted
  • หากอินพุตเป็นรายการที่ได้ทำการซื้อไปแล้วเอาต์พุต Item out of stock
  • หากการป้อนข้อมูลเป็นชุดตัวเลขตัวอักษรที่ไม่อยู่ในช่วง (เช่นA0หรือJ2ส่งออก "รหัสไม่ถูกต้อง"
  • สำหรับอินพุตที่ไม่ถูกต้องทั้งหมดเอาต์พุต "ข้อผิดพลาด"

โบนัส (-15%): แยม

เมื่อจำหน่ายสินค้ามีโอกาส 10% ที่เครื่องจะติดขัดและสินค้าติดค้าง เอาท์พุทJAM!!!หนึ่งครั้ง ในกรณีนี้ผู้ใช้จะต้องใส่คำว่า "punch" หรือ "kick" ทุกครั้งที่ผู้ใช้ทำเช่นนั้นมีโอกาส 20% ที่สินค้าจะแตกเป็นอิสระและขายตามปกติ อินพุตที่รู้จักเท่านั้นคือ "punch" และ "kick" อินพุตอื่น ๆ ไม่ทำอะไรเลย นี่คือตัวอย่าง:

-A4
Item at A4 purchased. Remaining Balance: $1.00
JAM!!!
-punch
-kick
-kick
-punch
-punch
🍚

(กระดาษติดได้รับการล้างแล้วดำเนินการต่อตามปกติ)

โบนัส (-10%): ID

หากผู้ใช้พยายามซื้อเครื่องดื่มแอลกอฮอล์ (รายการใด ๆ ในแถวสุดท้ายยกเว้นขวดนม) คุณจะต้องแสดงหลักฐานยืนยันอายุ ในการดำเนินการดังกล่าวคุณขอให้ผู้ใช้คูณสองตัวเลขสุ่มระหว่าง 13 ถึง 19 (รวม) ID required: [13-19]x[13-19] = ?เอาท์พุต หากผู้ใช้ตอบถูกต้องการซื้อสามารถผ่านไปได้ ถ้าไม่พิมพ์🔞 (U + D83D U + DD1E) ฐาน 10: (55357 56606)

ทางเลือกท้าทาย: Minecraft

ความท้าทายนี้ดูเหมือนเป็นสิ่งที่เป็นไปได้ใน Minecraft ในการสร้างโปรแกรม Minecraft เวอร์ชันนี้ให้สำเร็จผู้เล่นจะต้อง

  • มีตาราง 8x7 ให้เลือก 56 รายการที่ไม่ซ้ำกัน
  • สามารถเพิ่มเงินให้กับยอดเงินได้ (อาจใช้หินประเภทต่าง ๆ สำหรับนิกายต่าง ๆ ที่อธิบายไว้ข้างต้น)
  • ให้ผู้ใช้เลือกรายการที่พวกเขา / เธอเลือกหากพวกเขาใส่ "เงิน" ที่เพียงพอ
  • ส่งคืนจำนวนผู้ใช้ที่เหมาะสมของการเปลี่ยนแปลงในตอนท้าย

โหมดที่เข้ากันได้

  • ฉันสามารถรับอินพุตที่จุดเริ่มต้นของโปรแกรมเท่านั้น

    • ไม่ต้องกังวลคุณสามารถสร้างโปรแกรมที่ให้การป้อนข้อมูลล่วงหน้าทั้งหมด หากโปรแกรมของคุณยังไม่สิ้นสุดหลังจากประเมินอินพุตทั้งหมดให้ถือว่า "เสร็จสิ้น" ถูกเรียกเมื่อสิ้นสุด หากคุณทำวิธีนี้คุณจะไม่มีสิทธิ์ได้รับโบนัสใด ๆ
  • ฉันไม่สามารถดู / ส่งอีโมจิได้

    • คุณสามารถคัดลอกและวางอินพุทและเอาท์พุทของคุณลงในส่วนย่อยของสแนปช็อต (หรือที่นี่ ) มันสามารถเข้าใจได้ทั้ง unicode emojis และ HTML code สำหรับ emojis หากผลลัพธ์ของคุณถูกต้องในหน้านี้แสดงว่าโปรแกรมของคุณผ่าน ลองวางในอินพุต / เอาต์พุตตัวอย่างบางส่วนเพื่อดูว่ามันมีลักษณะเป็นอย่างไร

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>

นี่เป็นเวอร์ชั่นย่อของโหมดความเข้ากันได้แบบย่อของเครื่องหยอดเหรียญที่คุณสามารถทดสอบได้ใน Stack Snippet:

   &#x31&#x20E3&#x32&#x20E3&#x33&#x20E3&#x34&#x20E3&#x35&#x20E3...
A&#x1F345&#x1F346&#x1F347&#x1F348&#x1F349...
B 
...
  • ฉันสามารถส่งอีโมจิ แต่ไม่ไปที่ STDOUT

    • ดูเหมือนเทอร์มินัล Mac OS X เป็นเพียงเครื่องเดียวที่รู้จักกันในการส่งออกอิโมจิ หากคุณไม่สามารถส่งอีโมจิในเครื่องได้ตัวเลือกอื่นของคุณคือ
      • ส่งเอาต์พุตทั้งหมดไปยังไฟล์
      • แสดงเอาต์พุตทั้งหมดในหน้าต่าง
      • ใช้เทคนิคที่อธิบายไว้ใน "ฉันไม่สามารถดู / ส่งอีโมจิ"

5
$ can be replaced with your local currencyไม่สมเหตุสมผลหากคุณต้องการให้เหรียญเป็น (N) ickels (D) imes และ (Q) uarters ฉันแนะนำให้คุณลบมันเพราะมันจะเพิ่มความสับสน
เลเวลริเวอร์เซนต์

@ stververill จุดดี ฉันเปลี่ยนมันแล้ว คำถามของฉันคือแป้นพิมพ์ที่ไม่ใช่ของสหรัฐอเมริกามีปุ่ม $ หรือมีรหัสให้หรือไม่
geokavel

$สัญลักษณ์เป็นส่วนหนึ่งของชุดอักขระ ASCII ดังนั้นจึงปลอดภัยถือว่าสวยมากคีย์บอร์ดและภาษาสามารถจัดการกับมันทั้งหมด มันเป็นสัญลักษณ์สกุลเงินเดียวในชุดอักขระ ASCII 7 บิต เป็นผลให้สัญลักษณ์อื่น ๆ เช่นสัญลักษณ์ GBP หรือสัญลักษณ์ EUR สามารถแสดงผลไม่ถูกต้องเนื่องจากการเข้ารหัสสตริงที่เข้ากันไม่ได้ แต่มันไม่เคยเกิดขึ้น$จริง
เลเวลริเวอร์เซนต์

@ สตีฟเวอร์ฉันรู้ว่าพวกเขาสามารถจัดการได้ แต่มีปุ่มแป้นพิมพ์จริงหรือไม่?
geokavel

แป้นพิมพ์ภาษาอังกฤษและสเปนของฉันมีนอกเหนือจากสัญลักษณ์สกุลเงินท้องถิ่นที่เกี่ยวข้องแล้วและฉันก็คิดว่าแป้นอื่น ๆ ก็น่าสนใจเช่นกัน นอกเหนือจากการเป็นสัญลักษณ์สกุลเงินที่ใช้กันอย่างแพร่หลายมากที่สุดในโลก (รวมถึงสกุลเงินที่ไม่ได้เรียกว่าดอลลาร์) $สัญลักษณ์นี้มีความหมายพิเศษในภาษาการเขียนโปรแกรมส่วนใหญ่ ฉันพิมพ์ข้อความนี้บนแป้นพิมพ์ภาษาสเปนและจริง ๆ แล้วมันง่ายกว่าที่จะได้รับ $ (shift + 4) มากกว่า€ (alt gr + E) ดังนั้นคุณจะเห็นว่าสัญลักษณ์หลังถูกเพิ่มเข้ามาในภายหลัง
เลเวลริเวอร์เซนต์

คำตอบ:


8

PHP, (1295 - 14) - 25% = 960.75 ตัวอักษร

คะแนนเก่า1315 1351 1361 1295 989 977

นั่นสนุกและเป็นคำตอบแรก - ใช่

$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;

ในฐานะที่เป็นเครื่องขายแสตมป์อัตโนมัติเตือนฉันของ 90s ฉันใช้gotoและสำหรับรายการที่ซื้อSpace Invader 👾จะปรากฏขึ้น เครื่องถูกวาดใหม่หลังจากทุกคำสั่ง

Ungolfed (อย่างใด)

$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;

👾ทดสอบบน OS X ด้วย PHP 5.5 และ 5.6 👾


การแก้ไข

  • ที่เพิ่มเข้ามา 12 ไบต์ ทางออกคงที่Doneและกอล์ฟสตริงบางอย่าง
  • ที่เพิ่มเข้ามา 306 ไบต์ แก้ไขข้อบกพร่องหนึ่งหรือสองข้อและเพิ่มการสนับสนุนสำหรับโบนัส ด้วยโบนัสทำให้ตอนนี้สั้นลงเกือบ15 ไบต์
  • ที่เพิ่มเข้ามา 66 ไบต์ ต้องจัดรูปแบบเงินที่แตกต่างกันยังต้องยอมรับค่ามากขึ้น ( [A-Z][0-9]) สำหรับInvalid codeสำหรับ
  • ที่บันทึกไว้ 10 ไบต์ พบหนึ่งช่องว่างและกลาย.=เป็นบางส่วน=มีผลบังคับใช้
  • บันทึกแล้ว 36 ไบต์เนื่องจากมีการรีแฟคเตอร์ใหม่
  • บันทึก 20 ไบต์โดยปรับโครงสร้างลูปและการกำหนดใหม่อีกครั้ง

ว้าวสนุกมากที่ได้เล่น! ปัญหาเดียวที่ฉันสังเกตเห็น: คุณต้องจัดรูปแบบราคาเช่น 3 และ 3.5 เป็น $ 3.00 และ $ 3.50
geokavel

นอกจากนี้เมื่อฉันพิมพ์J5ฉันควรได้รับข้อความ: "รหัสไม่ถูกต้อง"
geokavel

@geokavel ขอบคุณสำหรับคำติชม ฉันได้เพิ่มรูปแบบเงินที่ถูกต้องแล้วและยังรับได้หลากหลายมากขึ้นในInvalid codeตอนนี้ มันเป็นความสนุกที่ท้าทาย - แม้ว่ามันจะมีตัวเลือกมากมาย ... ตัวละคร 1K พูดเพื่อตัวเอง… :)
insertusernamehere

ขอแสดงความยินดีด้วยกำไรที่แคบคุณเป็นผู้ชนะ! ขอขอบคุณผู้เล่นทั้งสองที่เป็นคู่แข่งที่มีค่าควรและพยายามออกไปเล่นกอล์ฟด้วยความจริงใจ!
geokavel

@geokavel มันเป็นการท้าทายที่สนุกและปิงปองที่ดีระหว่างสเตฟานกับฉัน หากใครบางคนจะคิดหาทางออกที่สั้นกว่านี้ในอนาคตฉันจะไปที่นั่น ;)
insertusernamehere

5

C # 6 (สุทธิกรอบ 4.6) 1356 1324 1304 1311 1307 1238 1235 1231 1220 Letters - (แถมรหัสโบนัส Jam 15% + 10%) = - 14 (ตัวเลข Emoji) จดหมาย1017 993 978 972.75 969.75 918 915.75 904.5 จดหมาย

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);}

ungolfed เล็กน้อยสำหรับใช้ใน LinqPad 5 (C # 6) ใช้ h = System.Console ใน F4

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);

แก้ไข: ขอบคุณสำหรับคำแนะนำสำหรับ (;;);)

แก้ไข: Strike !! ดีกว่า PHP ;-)

แก้ไข: ลบ 24 ตัวอักษร ยังมีสิ่งที่เหลือสำหรับ PHP

แก้ไข: ลบ 20 ตัวอักษรโดยเปลี่ยนจากทศนิยมเป็นสองเท่า

แก้ไข: ลบ 7 ตัวอักษรโดยเปลี่ยนเป็นหมายเลข Emoji

แก้ไข: ลบ 4 ตัวอักษรโดยสลับทุกอย่างเป็นสองเท่าแทนที่จะเป็นแบบคู่และแบบผสม

แก้ไข: ลบ 69 ตัวอักษร - พบรหัสตายแล้ว o_O Best Entry C #: D

แก้ไข: ลบ 3 ตัวอักษร - สลับคำสั่ง if-else ครั้งสุดท้าย

แก้ไข: ลบ 4 ตัวอักษร - เปลี่ยนจากตัวดำเนินการลัดวงจร (&& และ ||) เป็นปกติ & และ |

แก้ไข: ลบ 11 ตัวอักษร - เปลี่ยนจาก h.WriteLine เป็น w () ด้วยสตริงคำต่อคำที่มีเงื่อนไข


ดูดี. ฉันสามารถทดสอบที่นี่ด้วยอินพุตแบบคงที่ มีวิธีให้ฉันทดสอบออนไลน์หรือบน Mac ด้วยอินพุตแบบไดนามิกหรือไม่
geokavel

คุณสามารถทดสอบได้ด้วยการป้อนข้อมูลแบบไดนามิกที่นี่??แม้ว่าอีโมจิแสดงขึ้นเป็น
geokavel

ปัญหาเดียวที่ฉันพบกับคุณคือ "รหัสไม่ถูกต้อง" ควรปรากฏขึ้นสำหรับคำสั่งผสมตัวเลขจำนวนหลักที่ไม่อยู่ในช่วง ข้อผิดพลาดที่ไม่ระบุทั้งหมดควรส่งออก "ข้อผิดพลาด"
geokavel

ระหว่างทาง @insertusernamehere: D
Stephan Schinkel

เฮ้ .... ฉันได้ลงไปภายใต้ php :) @ insertusernamehere
Stephan Schinkel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.