自動販売機をシミュレートします。アイテムは56種類の絵文字で、:( U + D83C U + DF45)から🍼(U + D83C U + DF7C)までの2つの代理UTF-8文字として表すことができます。HTMLでは、これらの絵文字は&#x1F345から&#x1F37CとしてUTF-16形式で表すことができます。ベース10では、最初のUTF-8文字の値は55356です。二番目の文字の値は、より範囲の57157に57212。これは、関連するすべての絵文字を生成するCJamプログラムです。混乱を避けるため、このチャレンジはbytesではなく文字でスコアリングされます。一部の絵文字は2文字で、一部は3文字です。http://www.lettercount.comは、このチャレンジの正確なカウントを提供します。
価格設定💵💵💵
8つの異なる価格カテゴリがあります。
- $ 1.00:🍅🍆🍇🍈🍉🍊🍋
- $ 1.50:🍌🍍🍎🍏🍐🍑🍒
- $ 2.00:🍓🍔🍕🍖🍗🍘🍙
- $ 2.50:🍚🍛🍜🍝🍞🍟🍠
- 3.00ドル:🍡🍢🍣🍤🍥🍦🍧
- $ 3.50:🍨🍩🍪🍫🍬🍭🍮
- $ 4.00:🍯🍰🍱🍲🍳🍴🍵
- 4.50ドル:🍶🍷🍸🍹🍺🍻🍼
自動販売機の展示
これは、プログラムの開始時および購入後にユーザーに表示されるものです。絵文字番号の代わりに通常の番号を使用できますが、絵文字番号には他の絵文字と同じ幅であるという利点があります。絵文字番号を使用する場合、絵文字番号はそれぞれ3文字であるため、スコアから14文字を差し引くことができます。
1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🍡🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼
ユーザーが入力するG5と、thatが選択されます。入力すると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]。毎回追加できるのは1つの紙幣またはコインのみです。以下に、3行の入力を含む例を示します。
/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ドルにした場合、プログラムは自動的に終了します。あるいは、ユーザーがいつでも「完了」を入力した場合、プログラムはユーザーに変更の残りの残高を提供する必要があります。変更は、ニッケル、ダイム、クォーターのみで行われ、可能な限り最小のコインでなければなりません。たとえば、残りの残高が$ 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
無効なコード
- 入力がで始まる
/が、有効なマネー入力ではない場合、outputMoney not Accepted。 - 入力が既に購入済みのアイテムである場合、出力
Item out of stock - 入力が範囲外の数字と文字の組み合わせである場合(
A0またはなどJ2、出力「無効なコード」 - 他のすべての無効な入力については、「エラー」を出力します
ボーナス(-15%):ジャム
アイテムを販売するとき、機械が詰まる可能性が10%あり、アイテムがスタックします。JAM!!!1回出力します。この場合、ユーザーは「パンチ」または「キック」を入力する必要があります。ユーザーがそうするたびに、アイテムが自由に壊れ、通常どおり販売される可能性が20%あります。紙詰まりが解消するまで、認識される入力は「パンチ」と「キック」のみです。他のすべての入力は何もしません。サンプルを次に示します。
-A4
Item at A4 purchased. Remaining Balance: $1.00
JAM!!!
-punch
-kick
-kick
-punch
-punch
🍚
(紙詰まりは解消されました。通常どおり再開してください。)
ボーナス(-10%):ID
ユーザーがアルコール飲料(哺乳瓶以外の最後の行のアイテム)を購入しようとする場合、年齢の証明を要求する必要があります。これを行うには、ユーザーに13から19(両端を含む)の2つの乱数を乗算するように依頼します。出力ID required: [13-19]x[13-19] = ?。ユーザーが正解すると、購入は完了します。そうでない場合は、base(U + D83D U + DD1E)base 10:(55357 56606)を印刷します
代替チャレンジ:Minecraft
この課題は、Minecraftで可能なことのように思えます。このプログラムのMinecraftバージョンを正常に作成するには、プレーヤーは
- 56個の一意のアイテムから選択するための8x7グリッド
- 残高にお金を追加することができます(上記のさまざまな額面にさまざまな種類の石を使用している可能性があります)。
- ユーザーが十分な「お金」を入れた場合に選択したアイテムをユーザーに提供します
- 最後に適切な量の変更をユーザーに返します。
互換モード
プログラムの開始時にのみ入力を取得できます
- 心配しないで、すべての入力を事前に受け取るプログラムを作成できます。すべての入力を評価した後、プログラムが終了していない場合は、最後に「完了」が呼び出されたと想定します。この方法を実行すると、ボーナスの対象になりません。
絵文字を表示/出力できません
- 入力と出力をこのスタックスニペット(またはここ)にコピーして貼り付けることができます。ユニコード絵文字と絵文字用のHTMLコードの両方を理解できます。このページで出力が正しいように見える場合、プログラムは合格です。サンプルの入出力の一部を貼り付けて、どのように見えるかを確認してください。
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>
以下は、スタックスニペットでテストできる自動販売機ディスプレイの互換モードの短縮バージョンです。
1⃣2⃣3⃣4⃣5⃣...
A🍅🍆🍇🍈🍉...
B
...
絵文字は出力できますが、STDOUTには出力できません。
- 一見、Mac OS Xターミナルは絵文字を出力できることが知られている唯一のターミナルです。端末で絵文字を出力できない場合、他のオプションは
- すべての出力をファイルに送信します。
- すべての出力をウィンドウに表示します。
- 「絵文字を表示/出力できない」で説明されている手法を使用します。
- 一見、Mac OS Xターミナルは絵文字を出力できることが知られている唯一のターミナルです。端末で絵文字を出力できない場合、他のオプションは
$シンボルは、それはほとんどすべてのキーボードと言語がそれを扱うことができると仮定しても安全です、ASCII文字セットの一部です。これは、7ビットASCII文字セットで唯一の通貨記号です。その結果、GBPシンボルやEURシンボル€などの他のシンボルは、互換性のない文字列エンコードのために誤ってレンダリングされる可能性がありますが、実際には起こりません$。
$記号はほとんどのプログラミング言語で特別な意味を持つため、キーボードで使用できないことは深刻な制限になります。スペイン語のキーボードでこれを入力しているので、実際には€(alt gr + E)より$(shift + 4)を取得する方が簡単なので、後者の記号が後付けとして追加されていることがわかります。
$ can be replaced with your local currencyコインを(N)ickels(D)imesと(Q)uartersにする必要がある場合はあまり意味がありません。混乱を招くため、削除することをお勧めします。