Không thể nhìn thấy biểu tượng cảm xúc? Nhấn vào đây .
Bạn sẽ mô phỏng một máy bán hàng tự động. Các mục là 56 biểu tượng cảm xúc khác nhau, có thể được biểu diễn dưới dạng hai ký tự UTF-8 thay thế, từ: (U + D83C U + DF45) đến 🍼 (U + D83C U + DF7C). Trong HTML, các biểu tượng cảm xúc này có thể được biểu diễn dưới dạng UTF-16 dưới dạng & # x1F345 đến & # x1F37C . Trong cơ sở 10, ký tự UTF-8 đầu tiên có giá trị 55356 . Giá trị của ký tự thứ hai nằm trong khoảng từ 57157 đến 57212 . Đây là một chương trình CJam tạo ra tất cả các biểu tượng cảm xúc có liên quan. Để tránh nhầm lẫn, thử thách này sẽ được ghi bằng ký tự, không phải byte . Một số biểu tượng cảm xúc có 2 ký tự, một số là 3. http://www.lettercount.com sẽ cung cấp cho bạn số đếm chính xác cho thử thách này.
Giá cả
Có 8 loại giá khác nhau:
- 1 đô la:
- $ 1,50:
- $ 2,00:
- $ 2,50:
- $ 3,00:
- $ 3,50:
- $ 4,00:
- $ 4,50:
Hiển thị máy bán hàng tự động
Đây là những gì người dùng nhìn thấy khi chương trình bắt đầu và sau khi mua hàng. Bạn có thể sử dụng số thông thường thay vì số biểu tượng cảm xúc, nhưng số biểu tượng cảm xúc có lợi ích là có cùng chiều rộng với các biểu tượng cảm xúc khác. Nếu bạn sử dụng số biểu tượng cảm xúc, bạn có thể trừ 14 ký tự khỏi điểm số của mình, vì mỗi số biểu tượng cảm xúc là 3 ký tự.
1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🍡🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼
Nếu người dùng nhập G5mà chọn 🍳. Nhập E6chọn 🍦.
Thêm tiền mặt
Để thêm tiền, người dùng nên nhập /và sau đó mã cho một đồng xu hoặc hóa đơn. Các đồng tiền là (N) ickel (0,05 đô la), (D) ime (0,10 đô la) và (Q) uarter (0,25 đô la). Các hóa đơn là (O) ne ($ 1), (F) ive ($ 5,00), (T) en ($ 10,00). Mỗi khi người dùng thêm hóa đơn hoặc tiền xu, chương trình sẽ xuất ra Balance: [New Balance]. Mỗi lần chỉ có thể thêm một hóa đơn hoặc tiền xu. Đây là một ví dụ chứa ba dòng đầu vào:
/D
Balance: $0.10
/Q
Balance: $0.35
/F
Balance: $5.35
Chọn vật phẩm
Người dùng chọn một mục bằng cách nhập mã mục, như B2hoặc C3. Nếu người dùng chưa thêm bất kỳ khoản tiền nào, chương trình sẽ xuất ra Item Cost: [Cost of Item]. Nếu người dùng đã thêm tiền, nhưng nó không đủ để mua sản phẩm, thì đầu ra phải là Insufficient Funds. Item Cost: [Cost of Item]. Nếu người dùng đã thêm đủ tiền, chương trình sẽ xuất ra : Item at [Item Location] Purchased. Remaining Balance: [Balance - Cost of Item]. Sau đó, trên dòng riêng của mình, in biểu tượng cảm xúc của mặt hàng đã mua. Sau đó in ra toàn bộ máy bán hàng tự động (Xem phần "Hiển thị máy bán hàng tự động") với mặt hàng đã mua được thay thế bằng (U + D83D U + DEAB) Cơ sở 10: (55357 57003).
Kết thúc chương trình
Nếu người dùng mua một mặt hàng khiến số dư của họ giảm xuống còn $ 0,00, chương trình sẽ tự động chấm dứt. Ngoài ra, nếu người dùng nhập "Xong" bất cứ lúc nào, chương trình phải cung cấp cho người dùng số dư còn lại của mình. Thay đổi phải chỉ trong Nickels, Dimes và Quarters và phải là số lượng xu nhỏ nhất có thể. Ví dụ: nếu số dư còn lại là $ 1,45, thì đầu ra phải là QQQQQDD.
Chạy mẫu
(Đầu vào bắt đầu bằng "-")
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
Mã không hợp lệ
- Nếu đầu vào bắt đầu bằng
/nhưng không phải là đầu vào tiền hợp lệ, đầu raMoney not Accepted. - Nếu đầu vào là một mặt hàng đã được mua, đầu ra
Item out of stock - Nếu đầu vào là tổ hợp chữ số không nằm trong phạm vi (như
A0hoặcJ2, đầu ra "Mã không hợp lệ" - Đối với tất cả các đầu vào không hợp lệ khác, đầu ra "Lỗi"
Tiền thưởng (-15%): Mứt
Khi bán một mặt hàng, có 10% khả năng máy sẽ bị kẹt và mặt hàng bị kẹt. Đầu ra JAM!!!một lần. Trong trường hợp này, người dùng phải nhập "punch" hoặc "kick". Mỗi lần người dùng làm như vậy, có 20% khả năng mặt hàng đó sẽ thoát ra và trả lại như bình thường. Cho đến khi hết kẹt, các đầu vào duy nhất được công nhận là "punch" và "kick". Tất cả các đầu vào khác không làm gì cả. Đây là một mẫu:
-A4
Item at A4 purchased. Remaining Balance: $1.00
JAM!!!
-punch
-kick
-kick
-punch
-punch
🍚
(Mứt đã được xóa. Tiếp tục như bình thường.)
Tiền thưởng (-10%): ID
Nếu người dùng cố gắng mua đồ uống có cồn (bất kỳ mặt hàng nào ở hàng cuối cùng ngoại trừ bình sữa trẻ em), bạn phải yêu cầu bằng chứng về tuổi. Để làm như vậy, bạn yêu cầu người dùng nhân hai số ngẫu nhiên trong khoảng từ 13 đến 19 (đã bao gồm). Đầu ra ID required: [13-19]x[13-19] = ?. Nếu người dùng trả lời đúng, việc mua hàng có thể đi qua. Nếu không, hãy in (U + D83D U + DD1E) cơ sở 10: (55357 56606)
Thử thách thay thế: Minecraft
Thử thách này có vẻ như là một điều có thể xảy ra trong Minecraft. Để tạo thành công phiên bản Minecraft của chương trình này, người chơi phải
- Có lưới 8x7 để chọn từ 56 mục độc đáo
- Có thể thêm tiền vào số dư (Có thể sử dụng các loại đá khác nhau cho các mệnh giá khác nhau được mô tả ở trên.)
- Cung cấp cho người dùng vật phẩm mà họ chọn nếu họ đã đặt đủ "tiền"
- Trả lại cho người dùng số tiền thay đổi thích hợp ở cuối.
Chế độ tương thích
Tôi chỉ có thể nhận đầu vào khi bắt đầu chương trình
- Đừng lo lắng, bạn có thể tạo một chương trình đưa tất cả đầu vào lên phía trước. Nếu chương trình của bạn chưa kết thúc sau khi đánh giá tất cả đầu vào, giả sử rằng "Xong" được gọi ở cuối. Nếu bạn làm phương pháp này, bạn sẽ không đủ điều kiện nhận bất kỳ khoản thưởng nào.
Tôi không thể xem / xuất biểu tượng cảm xúc
- Bạn có thể sao chép và dán đầu vào và đầu ra của mình vào Stack Snippet này (hoặc tại đây ). Nó có thể hiểu cả biểu tượng cảm xúc unicode và mã HTML cho biểu tượng cảm xúc. Nếu đầu ra của bạn trông chính xác trên trang này, chương trình của bạn sẽ vượt qua. Hãy thử dán vào một số đầu vào / đầu ra mẫu để xem nó trông như thế nào.
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>
Dưới đây là phiên bản chế độ tương thích rút gọn của màn hình máy bán hàng tự động mà bạn có thể kiểm tra trong Stack Snippet:
1⃣2⃣3⃣4⃣5⃣...
A🍅🍆🍇🍈🍉...
B
...
Tôi có thể xuất biểu tượng cảm xúc, nhưng không thể STDOUT.
- Dường như, Mac OS X Terminal là thiết bị duy nhất được biết có khả năng xuất biểu tượng cảm xúc. Nếu bạn không thể xuất biểu tượng cảm xúc trong thiết bị đầu cuối của mình, các tùy chọn khác của bạn là
- Gửi tất cả đầu ra cho một tập tin.
- Hiển thị tất cả đầu ra trong một cửa sổ.
- Sử dụng kỹ thuật được mô tả trong "Tôi không thể xem / xuất biểu tượng cảm xúc".
- Dường như, Mac OS X Terminal là thiết bị duy nhất được biết có khả năng xuất biểu tượng cảm xúc. Nếu bạn không thể xuất biểu tượng cảm xúc trong thiết bị đầu cuối của mình, các tùy chọn khác của bạn là
$biểu tượng là một phần của bộ ký tự ASCII, vì vậy nó an toàn để giả định khá nhiều tất cả bàn phím và ngôn ngữ có thể xử lý nó. Nó là ký hiệu tiền tệ duy nhất trong bộ ký tự ASCII 7 bit. Do đó, các ký hiệu khác như ký hiệu GBP hoặc ký hiệu EUR có thể được hiển thị không chính xác do mã hóa chuỗi không tương thích, nhưng hầu như không bao giờ xảy ra $.
$biểu tượng có ý nghĩa đặc biệt trong hầu hết các ngôn ngữ lập trình, do đó, không có sẵn trên bàn phím sẽ là một hạn chế nghiêm trọng. Tôi đang gõ phím này trên bàn phím tiếng Tây Ban Nha của mình và thực sự dễ dàng nhận được $ (shift + 4) hơn € (alt gr + E) để bạn có thể thấy biểu tượng sau được thêm vào như một suy nghĩ sau.
$ can be replaced with your local currencysẽ không có ý nghĩa gì nếu sau đó bạn yêu cầu các đồng xu là (N) ickels (D) imes và (Q) uarters. Tôi đề nghị bạn loại bỏ nó vì nó thêm sự nhầm lẫn.