Tidakkah kamu membencinya ketika kamu tidak ingat bagaimana membuat sesuatu di Minecraft? Nah, saatnya memperbaiki itu!
Tugas
Tugas Anda adalah mengambil input, baik sebagai daftar 1D atau 2D dan menampilkan item apa yang merupakan hasil dari tabel crafting!
Memasukkan
Anda dapat mengambil input sebagai string atau daftar panjang 9
atau array bersarang 2D.
Jika Anda mengambil input sebagai ...
Tali
Setiap item dalam tabel adalah 1 karakter dalam karakter ASCII yang dapat dicetak ( 0x20
untuk 0x7E
). Untuk merepresentasikan ruang kosong, Anda menggunakan -
eg WWW-W-WWW
akan sama dengan tabel crafting like
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
| | Wood | |
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
Anda juga dapat mengambil input sebagai string multiline selama semua spasi dipertahankan, mis
WWW
W
WWW
Array 1D
Anda akan mengambil input sebagai array char di mana ruang kosong pada tabel crafting akan menjadi char kosong misalnya tabel di atas akan ['W','W','W','','W','','W','W','W']
Array 2D
Kali ini, setiap daftar merepresentasikan garis pada tabel crafting, di mana ruang kosong adalah mis kosong [['W','W','W'],['','W',''],['W','W','W']]
Anda dapat mengasumsikan bahwa input akan selalu sesuai dengan item yang dapat dibuat, dan jika menggunakan input array, Anda dapat mengganti char kosong dengan karakter apa pun yang tidak digunakan sebagai nama singkatan.
Keluaran
Keluaran akan berupa barang yang dibuat dari input, dalam bentuk apa pun yang Anda inginkan, selama itu jelas artinya. (Secara pribadi, saya akan menggunakan singkatan 1 huruf dari item)
Bahan
Untuk tantangan ini, wood
berarti papan kayu, bukan kayu.
Anda hanya perlu menangani item yang paling umum saat membuat kerajinan. Ini adalah bahan untuk kerajinan tetapi mungkin juga merupakan produk kerajinan. Resep kerajinan mengikuti format xxxxxxxxx
seperti input string di atas. Jika suatu barang tidak dapat dibuat, ---------
ditempatkan sebagai gantinya.
Beberapa resep tidak berbentuk , artinya selama semua item ada, item tersebut akan dibuat. Ini dilambangkan menjadi a *
. Contohnya adalah pumpkin pie
(bukan satu-satunya dalam tantangan ini) yang hanya perlu pumpkin
, sugar
dan egg
harus dibuat.
item name | abb. name | crafting recipe
----------------+-----------+------------------
wood | W | ---------
cobblestone | C | ---------
sticks | S | ----W--W-
iron | I | ---------
gold | G | ---------
diamond | D | ---------
redstone | R | ---------
string | N | ---------
coal | Y | ---------
sugar cane | U | ---------
redstone torch | E | -R--S----
paper | P | ---------
book | B | ---PL-PP-
wool | M | ---NN-NN-
obsidian | O | ---------
gunpowder | X | ---------
sand | A | ---------
glass | H | ---------
feather | F | ---------
flint | K | ---------
torch | T | ---------
leather | L | ---------
material blocks | Z | QQQQQQQQQ (here Q represents any in `[G, I, R, D, Y]`
compass | V | -I-IRI-I-
Produk
Ini adalah daftar semua produk yang bisa Anda tangani untuk kerajinan. jika item tersebut juga merupakan bahan, itu tidak akan dimasukkan di sini tetapi Anda harus tetap bisa menanganinya . Masing-masing dapat dibuat hanya menggunakan bahan-bahan di atas dan ditunjuk sebagai huruf kecil yang unik untuk mengidentifikasinya. Armor ( +
) dapat menggunakan bahan apa pun di [G, I, L, D]
. Senjata ( $
) dapat dibuat dari [W, C, I, G, D]
. Karena ini adalah situs kode-golf , kita perlu membuat daftar ini lebih pendek. [G, I, L, D]
dilambangkan dengan a Q
dan [W, C, I, G, D]
dilambangkan dengan a J
.
item name | abb. name | crafting recipe
----------------+-----------+------------------
crafting table | a | -----WWWW
boots + | b | ---Q-QQ-Q
pants + | c | QQQQ-QQ-Q
chestplate + | d | Q-QQQQQQQ
helmet + | e | QQQQ-Q---
bed | f | ---MMMWWW
chest | g | WWWW-WWWW
wood door | h | WW-WW-WW-
iron door | i | II-II-II-
furnace | j | CCCC-CCCC
trap door | k | ---WW-WW-
TNT | l | XAXAXAXAX
anvil | m | ZZZ-I-III
axe $ | n | -JJ-SJ-S-
sword $ | o | -J--J--S-
pickaxe $ | p | JJJ-S--S-
hoe $ | q | JJ--S--S-
shovel $ | r | -J--S--S-
arrow | s | -K--S--F-
bow | t | SN-S-NSN-
bowl | u | ---W-W-W-
gold nugget * | v | ----G----
bucket | w | ---I-I-I-
clock | y | -G-GRG-G-
map | z | PPPPVPPPP
fishing rod | 1 | --S-SNS-N
flint and steel | 2 | ----I---K
shears | 3 | ---I---I-
wood button * | 4 | ----W----
dropper | 5 | CCCC-CCRC
stone button * | 6 | ----C----
jukebox | 7 | WWWWDWWWW
lever | 8 | ----S--C-
noteblock | 9 | WWWWRWWWW
piston | 0 | WWWCICCRC
pressure plate | ! | ------WW- (W can also be replaced with C/I/G)
repeater | @ | ---ERECCC
tripwire hook | # | -I--S--W-
activator rail | ( | ISIIEIISI
boat | % | ---W-WWWW
minecart | ^ | ---I-IIII
powered rail | & | G-GGSGGRG
rail | ) | I-IISII-I
stone wall | { | ---CCCCCC
fence gate | } | ---SWSSWS
fence panel | [ | ---SSSSSS
glass pane | ] | ---HHHHHH
iron bars | ; | ---IIIIII
item frame | : | SSSSLSSSS
ladder | ' | S-SSSSS-S
sandstone | " | -----AAAA
slabs | | | ---CCC---
stairs | < | W--WW-WWW
bookshelves | > | WWWBBBWWW
carpet | . | -------MM
painting | , | SSSSMSSSS
sign | ? | WWWWWW-S-
cauldron | / | I-II-IIII
enchant. table | ` | -B-DODOOO
glass bottle | ~ | ---H-H-H-
rocket * | _ | -----PXXX
Mencetak gol
Karena tidak masuk akal meminta Anda untuk melakukan semua resep ini, Anda hanya perlu melakukan yang Anda inginkan! Tapi tentu saja, semakin banyak yang Anda lakukan, semakin baik skor Anda.
Skor didefinisikan sebagai
score = length of program in bytes / number of working recipes squared
Sebagai contoh, ini bisa jadi pengiriman.
input()
print('S')
Karena Anda dapat mengasumsikan bahwa input yang dikirimkan akan menjadi salah satu yang dapat ditangani ( ----W--W-
), ia akan selalu menghasilkan S
, yang setara dengan sticks
. Ini akan skor 18/1 = 18 .
Anda harus mengambil input untuk menjadi program yang valid dan Anda harus dapat menangani setidaknya 5 input yang berbeda .
Orang dengan skor terendah menang.
Aturan
- Skor terendah menang
- Anda dapat mengambil input menggunakan metode apa pun yang diterima (parameter fungsi, STDIN, dll.)
- Anda hanya dapat mengambil input di salah satu formulir di atas. Itu tidak terlalu membatasi dan harus bisa diterapkan
- Celah standar tidak diijinkan
- Anda harus mengambil input
- Anda harus mengeluarkan setidaknya
5
hasil yang benar untuk memenuhi syarat sebagai yang bersaing. - Untuk resep yang tidak berbentuk, misalnya nugget emas, kombinasi berbeda tidak dihitung sebagai resep berbeda.
----W----
sama (resep-bijaksana) seperti--W------
dan hanya 1 resep. - Di sisi lain dari ini, untuk resep yang menggunakan lebih dari satu bahan, seperti balok bahan, masing-masing bahan berbeda dihitung sebagai resep yang berbeda, artinya
IIIIIIIII
tidak sama dengan resepRRRRRRRRR
.
Semoga beruntung, Minecrafters!
sumber
W--W-----
,-W--W----
,--W--W---
,---W--W--
,----W--W-
, atau,-----W--W
. apakah kita hanya perlu menangani satu atau semua ini?Jawaban:
Python 2 , Nilai: 0,0636347
715 byte, semua 106 resep
Cobalah online!
Menangani semua resep yang ditentukan, termasuk variasi bahan.
Membuat kamus semua resep yang berfungsi (dengan panjang 9).
Resep tak berbentuk dimasukkan dengan mengurutkan string input, dan memeriksa mereka terhadap kamus.
Sunting: Beralih ke kompresi string, dan menyimpan 7 byte dalam kode berkat notjagan
sumber
Mathematica, skor: 0,0482378
0,05402280,0543788542
607611byte, semua 106 resep-4 byte untuk mengatur ulang data terkompresi
-65 byte karena kehilangan kemampuan untuk berurusan dengan input yang tidak valid
Ambil input sebagai daftar 1D
{"W", "W", "", "", ...}
Versi yang diperluas & hapus:
Besar
Uncompress
adalah tabel string dari semua kombinasi, digabung bersama.StringPosition
mencari pencocokan dalam urutan: input itu sendiri, input diurutkan (untuk resep tak berbentuk), baju besi, senjata, pressure plate.# & @@ Join @@
mengembalikan posisi kejadian pertama./9+8/9
menghitung indeks dalam tabel hasil danStringTake
mengambil karakter pada posisi itu.sumber
SOGL V0.12 ,
325322317316 bytes / 106 ^ 2 = skor 0,0281238875Penjelasan:
Coba Di Sini! atau uji dengan menjalankan yang berikut (yang akan mengatakan apa yang salah):
sumber
Jelly , skor 0,00173611111
4 / (48 ^ 2) = 0,00173611111 skor
Mengambil input sebagai string dengan tanda hubung untuk ruang kosong, mis
-----WWWW
.Saya pikir ini valid karena tantangannya mengatakan
Singkatan 1 huruf kira-kira membingungkan seperti apa outputnya, jadi output ini cukup jelas artinya.
Ini mengasumsikan input dapat menjadi salah satu yang dapat ditangani oleh program seperti yang ditentukan oleh
Cobalah online!
Test Suite (Header dan footer mendandani output) Ini melakukan semua 48 resep dan memberikan nama mereka.
Bagaimana itu bekerja
Ini benar-benar hanya fungsi hash yang sangat buruk.
sumber