Tidak bisa melihat emoji? Klik di sini .
Anda akan mensimulasikan mesin penjual otomatis. Item tersebut adalah 56 emoji berbeda, yang dapat direpresentasikan sebagai dua karakter pengganti UTF-8, dari: 🍅 (U + D83C U + DF45) hingga 🍼 (U + D83C U + DF7C). Dalam HTML, emoji ini dapat direpresentasikan dalam formulir UTF-16 sebagai & # x1F345 hingga & # x1F37C . Dalam basis 10 karakter UTF-8 pertama memiliki nilai 55356 . Nilai karakter kedua berkisar dari 57157 hingga 57212 . Berikut adalah program CJam yang menghasilkan semua emoji yang relevan. Untuk menghindari kebingungan, tantangan ini akan dinilai dalam karakter, bukan byte . Beberapa emoji adalah 2 karakter, beberapa adalah 3. http://www.lettercount.com akan memberi Anda penghitungan yang akurat untuk tantangan ini.
Harga 💵💵💵
Ada 8 kategori harga yang berbeda:
- $ 1,00: 🍅🍆🍇🍈🍉🍊🍋
- $ 1,50: 🍌🍍🍎🍏🍐🍑🍒
- $ 2,00: 🍓🍔🍕🍖🍗🍘🍙
- $ 2,50: 🍚🍛🍜🍝🍞🍟🍠
- $ 3,00: 🍡🍢🍣🍤🍥🍦🍧
- $ 3,50: 🍨🍩🍪🍫🍬🍭🍮
- $ 4,00: 🍯🍰🍱🍲🍳🍴🍵
- $ 4,50: 🍶🍷🍸🍹🍺🍻🍼
Menampilkan Mesin Penjual Otomatis
Inilah yang dilihat pengguna saat program dimulai dan setelah melakukan pembelian. Anda dapat menggunakan nomor biasa sebagai ganti nomor emoji, tetapi nomor emoji memiliki manfaat sama lebarnya dengan emoji lainnya. Jika Anda menggunakan angka emoji, Anda dapat mengurangi 14 karakter dari skor Anda, karena angka emoji masing-masing 3 karakter.
1️⃣2️⃣3️⃣4️⃣5️⃣6️⃣7️⃣
A 🍅🍆🍇🍈🍉🍊🍋
B 🍌🍍🍎🍏🍐🍑🍒
C 🍓🍔🍕🍖🍗🍘🍙
D 🍚🍛🍜🍝🍞🍟🍠
E 🍡🍢🍣🍤🍥🍦🍧
F 🍨🍩🍪🍫🍬🍭🍮
G 🍯🍰🍱🍲🍳🍴🍵
H 🍶🍷🍸🍹🍺🍻🍼
Jika pengguna memasukkan G5
yang memilih 🍳. Memasukkan pilihan E6
🍦.
Menambahkan Uang Tunai 💸💸💸
Untuk menambah uang, pengguna harus memasukkan /
dan kemudian kode untuk koin atau tagihan. Koin-koin tersebut adalah (N) ickel ($ 0,05), (D) ime ($ 0,10), dan (Q) uarter ($ 0,25). Tagihannya adalah (O) ne ($ 1,00), (F) ive ($ 5,00), (T) id ($ 10,00). Setiap kali pengguna menambahkan tagihan atau koin, program harus menampilkan Balance: [New Balance]
. Hanya satu tagihan atau koin yang dapat ditambahkan setiap kali. Berikut adalah contoh yang berisi tiga baris input:
/D
Balance: $0.10
/Q
Balance: $0.35
/F
Balance: $5.35
Memilih Item
Pengguna memilih item dengan memasukkan kode item, suka B2
atau C3
. Jika pengguna belum menambahkan uang, program akan menampilkan Item Cost: [Cost of Item]
. Jika pengguna telah menambahkan uang, tetapi itu tidak cukup untuk membeli item, hasilnya seharusnya Insufficient Funds. Item Cost: [Cost of Item]
. Jika pengguna tidak menambahkan cukup uang, program ini harus output: Item at [Item Location] Purchased. Remaining Balance: [Balance - Cost of Item]
. Kemudian pada barisnya sendiri, cetak emoji dari barang yang dibeli. Kemudian cetak seluruh mesin penjual otomatis (Lihat "Menampilkan Mesin Penjual Otomatis") dengan barang yang dibeli diganti dengan 🚫 (U + D83D U + DEAB) Basis 10: (55357 57003).
Mengakhiri Program
Jika pengguna membeli item yang menurunkan saldonya menjadi $ 0,00, program harus diakhiri secara otomatis. Atau, jika pengguna memasukkan "Selesai" kapan saja, program harus memberikan sisa saldo kepada pengguna dalam perubahan. Perubahan harus dilakukan hanya dalam Nikel, Dimes, dan Quarters, dan harus menjadi jumlah koin sekecil mungkin. Sebagai contoh jika sisa saldo adalah $ 1,45, output seharusnya QQQQQDD
.
Contoh Jalankan
(Input dimulai dengan "-")
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
Kode Tidak Valid
- Jika input dimulai dengan
/
tetapi bukan input uang yang valid, outputMoney not Accepted
. - Jika input adalah item yang sudah dibeli, output
Item out of stock
- Jika input adalah kombinasi huruf-digit yang tidak dalam jangkauan (seperti
A0
atauJ2
, hasilkan "kode tidak valid" - Untuk semua input tidak valid lainnya, hasilkan "Kesalahan"
Bonus (-15%): Selai
Saat penjual item, ada kemungkinan 10% mesin akan macet, dan item macet. Keluaran JAM!!!
satu kali. Dalam hal ini pengguna harus memasukkan "pukulan" atau "tendangan". Setiap kali pengguna melakukannya, ada kemungkinan 20% bahwa barang tersebut akan terbebas, dan seperti biasa. Sampai macet hilang, satu-satunya input yang dikenali adalah "punch" dan "kick". Semua input lain tidak melakukan apa pun. Berikut ini contohnya:
-A4
Item at A4 purchased. Remaining Balance: $1.00
JAM!!!
-punch
-kick
-kick
-punch
-punch
🍚
(Kemacetan telah diatasi. Lanjutkan seperti biasa.)
Bonus (-10%): ID
Jika pengguna mencoba membeli minuman beralkohol (barang apa pun di baris terakhir kecuali botol bayi), Anda harus meminta bukti usia. Untuk melakukannya, Anda meminta pengguna untuk melipatgandakan dua angka acak antara 13 dan 19 (inklusif). Keluaran ID required: [13-19]x[13-19] = ?
. Jika pengguna menjawab dengan benar, pembelian dapat dilakukan. Jika tidak, cetak 🔞 (U + D83D U + DD1E) basis 10: (55357 56606)
Tantangan Alternatif: Minecraft
Tantangan ini sepertinya sesuatu yang mungkin di Minecraft. Untuk berhasil membuat versi Minecraft dari program ini, pemain harus
- Memiliki kotak 8x7 untuk memilih dari 56 item unik
- Dapat menambah uang ke saldo (Mungkin menggunakan berbagai jenis batu untuk berbagai denominasi yang dijelaskan di atas.)
- Berikan pengguna item yang dia pilih jika mereka telah memasukkan cukup "uang"
- Kembalikan pengguna jumlah perubahan yang sesuai di akhir.
Mode Kompatibilitas
Saya hanya dapat mengambil input di awal program
- Tidak perlu khawatir, Anda dapat membuat program yang mengambil semua input di muka. Jika program Anda belum berakhir setelah mengevaluasi semua input, asumsikan "Selesai" dipanggil di akhir. Jika Anda melakukan metode ini, Anda tidak akan berhak atas bonus apa pun.
Saya tidak dapat melihat / menampilkan emoji
- Anda dapat menyalin dan menempelkan input dan output Anda ke dalam Stack Snippet ini (atau di sini ). Ia dapat memahami kode emoji unicode dan HTML untuk emoji. Jika output Anda terlihat benar di halaman ini, program Anda lewat. Coba tempel di beberapa sampel input / output untuk melihat tampilannya.
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>
Berikut ini adalah versi mode kompatibilitas yang disingkat dari tampilan mesin penjual otomatis yang dapat Anda uji di Stack Snippet:
1⃣2⃣3⃣4⃣5⃣...
A🍅🍆🍇🍈🍉...
B
...
Saya dapat menampilkan emoji, tetapi tidak untuk STDOUT.
- Tampaknya, Terminal Mac OS X adalah satu-satunya yang diketahui dapat menghasilkan emoji. Jika Anda tidak dapat menampilkan emoji di terminal Anda, opsi Anda yang lain adalah
- Kirim semua output ke file.
- Tampilkan semua output di jendela.
- Gunakan teknik yang dijelaskan dalam "Saya tidak bisa melihat / keluaran emoji".
- Tampaknya, Terminal Mac OS X adalah satu-satunya yang diketahui dapat menghasilkan emoji. Jika Anda tidak dapat menampilkan emoji di terminal Anda, opsi Anda yang lain adalah
$ can be replaced with your local currency
tidak masuk akal jika Anda mengharuskan koin menjadi (N) ickels (D) imes dan (Q) uarters. Saya sarankan Anda menghapusnya karena menambah kebingungan.$
simbol adalah bagian dari set karakter ASCII, sehingga aman untuk mengasumsikan cukup banyak semua keyboard dan bahasa bisa mengatasinya. Ini adalah satu-satunya simbol mata uang dalam set karakter ASCII 7-bit. Akibatnya, simbol lain seperti simbol GBP atau simbol EUR € dapat ditampilkan secara keliru karena pengkodean string yang tidak kompatibel, tetapi sebenarnya tidak pernah terjadi$
.$
simbol tersebut memiliki makna khusus dalam sebagian besar bahasa pemrograman, sehingga tidak tersedia di papan ketik akan menjadi batasan serius. Saya mengetik ini di keyboard Spanyol saya dan sebenarnya lebih mudah untuk mendapatkan $ (shift + 4) daripada € (alt gr + E) sehingga Anda dapat melihat bahwa simbol yang terakhir ditambahkan sebagai renungan.Jawaban:
PHP, (1295 - 14) - 25% = 960,75 karakter
Skor lama
1315135113611295989977Itu menyenangkan, dan itu jawaban pertama - ya.
Saat mesin penjual otomatis mengingatkan saya pada tahun 90-an yang saya gunakan
goto
dan untuk barang yang dibeli, Space Invader👾
ditampilkan. Mesin digambar ulang setelah setiap perintah.Tidak disatukan (entah bagaimana)
👾 Diuji pada OS X dengan PHP 5.5 dan 5.6 👾
Suntingan
Done
dan pindahkan beberapa senar.[A-Z][0-9]
) untukInvalid code
..=
menjadi=
berlaku.sumber
J5
saya harus mendapatkan pesan: "Kode tidak valid".Invalid code
saat ini. Ini adalah tantangan yang menyenangkan - meskipun memiliki banyak pilihan ... 1K karakter berbicara sendiri ... :)C # 6 (.Net Framework 4.6),
135613241304131113071238123512311220 Surat - 14 Surat (Nomor Emoji) - (15% Bonus Jam + 10% Bonus ID) =1017993978972.75969.75918915.75904.5 Suratsedikit lebih ungolfed untuk digunakan di LinqPad 5 (C # 6). Gunakan h = System.Console di F4.
sunting: terima kasih atas petunjuk untuk (;;);)
edit: Strike !! Lebih baik dari PHP ;-)
sunting: Menghapus 24 Surat. Masih ada sesuatu yang tersisa untuk php.
sunting: Menghapus 20 Surat dengan beralih dari desimal ke ganda.
sunting: Dihapus 7 Surat dengan beralih ke Nomor Emoji
sunting: Dihapus 4 Huruf dengan mengalihkan segalanya menjadi ganda alih-alih campuran ganda dan int.
sunting: Dihapus 69 Surat - kode mati ditemukan o_O Entri Terbaik C #: D
sunting: Removed 3 Letters - beralih pernyataan if-else yang terakhir
sunting: Dihapus 4 Surat - beralih dari operator hubung singkat (&& dan ||) ke normal & dan |
sunting: Dihapus 11 Surat - beralih dari h.WriteLine ke w () dengan string kata demi kata bersyarat.
sumber
??
.