Не видите смайликов? Нажмите здесь .
Вы будете имитировать торговый автомат. Это 56 разных смайликов, которые можно представить в виде двух суррогатных символов UTF-8, от: from (U + D83C U + DF45) до 🍼 (U + D83C U + DF7C). В HTML эти Emojis может быть представлено в UTF-16 форме , как & # x1F345 через & # x1F37C . В базе 10 первый символ UTF-8 имеет значение 55356 . Значение второго символа варьируется от 57157 до 57212 . Вот программа CJam, которая генерирует все соответствующие смайлики. Чтобы избежать путаницы, этот вызов будет оцениваться в символах, а не в байтах . Некоторые смайлики состоят из двух символов, а некоторые из трех. Http://www.lettercount.com даст вам точный счет для этой задачи.
Цены 💵💵💵
Есть 8 различных ценовых категорий:
- 1 доллар США: 🍅🍆🍇🍈🍉🍊🍋
- $ 1,50: 🍌🍍🍎🍏🍐🍑🍒
- 2 доллара США: 🍓🍔🍕🍖🍗🍘🍙
- $ 2,50: 🍚🍛🍜🍝🍞🍟🍠
- 3 доллара США: 🍡🍢🍣🍤🍥🍦🍧
- $ 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) иккель ($ 0,05), (D) срок ($ 0,10) и (Q) уартер ($ 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
Неверные коды
- Если ввод начинается с,
/
но не является действительным вводом денег, выведитеMoney not Accepted
. - Если вход является предметом, который уже был куплен, выведите
Item out of stock
- Если ввод представляет собой комбинацию цифр и букв, которая не находится в диапазоне (например,
A0
илиJ2
, выведите «Неверный код»). - Для всех других неверных входных данных выведите «Error»
Бонус (-15%): варенье
При продаже товара с вероятностью 10% машина заклинит, и предмет застрянет. Вывод JAM!!!
один раз. В этом случае пользователь должен ввести «удар» или «удар». Каждый раз, когда пользователь делает это, есть 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. Чтобы успешно создать версию этой программы для Майнкрафта, игрок должен
- Сетка 8x7 на выбор из 56 уникальных предметов
- Иметь возможность добавлять деньги на баланс (возможно, использовать разные типы камней для разных конфессий, описанных выше.)
- Дайте пользователю предмет, который он / она выбирает, если он вложил достаточно «денег»
- Верните пользователю соответствующую сумму изменений в конце.
Режим совместимости
Я могу принять вход только в начале программы
- Не волнуйтесь, вы можете сделать программу, которая принимает все входные данные заранее. Если ваша программа не завершила работу после оценки всех вводимых данных, предположим, что в конце вызывается «Done». Если вы используете этот метод, вы не будете иметь право на какие-либо бонусы.
Я не могу просматривать / выводить смайлики
- Вы можете скопировать и вставить свой ввод и вывод в этот фрагмент стека (или здесь ). Он может понимать как смайлики Unicode, так и 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 Terminal - единственный, кто способен выводить эмодзи. Если вы не можете вывести смайлики в свой терминал, ваши другие варианты
- Отправить весь вывод в файл.
- Отобразить весь вывод в окне.
- Используйте технику, описанную в «Я не могу просматривать / выводить смайлики».
- Похоже, Mac OS X Terminal - единственный, кто способен выводить эмодзи. Если вы не можете вывести смайлики в свой терминал, ваши другие варианты
$
символ является частью набора ASCII символов, поэтому можно с уверенностью предположить , почти все клавишные и язык могут справиться с этим. Это единственный символ валюты в 7-битном наборе символов ASCII. В результате другие символы, такие как символ GBP или символ EUR, могут быть неправильно отображены из-за несовместимых кодировок строк, но это практически никогда не происходит $
.
$
символ имеет особое значение в большинстве языков программирования, поэтому его отсутствие на клавиатуре было бы серьезным ограничением. Я набираю это на своей испанской клавиатуре, и на самом деле легче получить $ (shift + 4), чем € (alt gr + E), чтобы вы могли видеть, что последний символ добавлен как запоздалая мысль.
$ can be replaced with your local currency
не имеет большого смысла, если вам требуется, чтобы монеты были (N) ickels (D) imes и (Q) uarters. Я предлагаю вам удалить его, поскольку это добавляет путаницы.