자동 판매기를 시뮬레이션합니다. 항목은 56 개의 서로 다른 이모티콘이며, (U + D83C U + DF45)에서 🍼 (U + D83C U + DF7C)까지 두 개의 서로 게이트 UTF-8 문자로 표시 될 수 있습니다. 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 : 🍶🍷🍸🍹🍺🍻🍼
자동 판매기 표시
이것은 프로그램 시작 시점과 구매 후 사용자에게 표시되는 내용입니다. 이모 지 번호 대신 일반 숫자를 사용할 수 있지만 이모 지 번호는 다른 이모 지와 동일한 너비의 이점이 있습니다. 이모티콘 숫자를 사용하면 이모티콘 숫자가 각각 3 자이므로 점수에서 14자를 뺄 수 있습니다 .
1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🍡🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼
사용자가 입력 G5하면 🍳가 선택됩니다. 입력하면 E6🍦가 선택됩니다.
현금 추가하기 💸💸💸
돈을 추가하려면, 사용자는 /동전이나 지폐의 코드를 입력 한 다음에 입력해야합니다 . 동전은 (N) 니켈 ($ 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) Base 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
잘못된 코드
- 입력이 시작
/되었지만 유효한 금액 입력이 아닌 경우 output을 출력하십시오Money not Accepted. - 입력이 이미 구매 한 품목 인 경우 출력
Item out of stock - 입력이 범위 내에 있지 않은 숫자 문자 조합 인 경우 (예 :
A0또는J2, "잘못된 코드" - 다른 모든 유효하지 않은 입력의 경우 "오류"를 출력하십시오.
보너스 (-15 %) : 잼
품목을 판매 할 때 기계가 걸릴 확률이 10 %이며 품목이 고착됩니다. JAM!!!한 번만 출력하십시오 . 이 경우 사용자는 "펀치"또는 "킥"을 입력해야합니다. 사용자가 그렇게 할 때마다 20 %의 확률로 해당 아이템이 무료로 제공되며 정상적으로 판매됩니다. 용지 걸림이 해결 될 때까지 "펀치"및 "킥"만 인식됩니다. 다른 모든 입력은 아무것도하지 않습니다. 다음은 샘플입니다.
-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 버전을 성공적으로 만들려면 플레이어가
- 56 개의 독특한 아이템 중에서 선택할 수있는 8x7 그리드
- 잔액에 돈을 추가 할 수 있어야합니다 (위에 설명 된 다른 명칭에 대해 다른 종류의 돌을 사용할 수도 있습니다).
- 충분한 "돈"을 넣은 경우 사용자가 선택한 항목을 사용자에게 제공하십시오.
- 마지막에 사용자에게 적절한 양의 변경을 반환하십시오.
호환 모드
프로그램 시작시에만 입력 할 수 있습니다
- 걱정할 필요없이 모든 입력을 미리 처리하는 프로그램을 만들 수 있습니다. 모든 입력을 평가 한 후 프로그램이 종료되지 않은 경우 끝에 "완료"가 호출되었다고 가정하십시오. 이 방법을 사용하면 보너스를받을 수 없습니다.
이모티콘을 보거나 출력 할 수 없습니다
- 입력 및 출력을 복사하여이 스택 스 니펫 (또는 here )에 붙여 넣을 수 있습니다 . 유니 코드 이모 지와 이모 지에 대한 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>
다음은 Stack Snippet에서 테스트 할 수있는 자동 판매기 디스플레이의 약식 호환 모드 버전입니다.
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) 니켈 (D) imes과 (Q) uarters가되어야하는 경우에는 의미가 없습니다. 혼란을 유발할 수 있으므로 제거하는 것이 좋습니다.