Minecraftで何かを作成する方法を思い出せない場合は、嫌いではありませんか?さて、それを改善する時間です!
仕事
あなたの仕事は、入力を1Dまたは2Dリストとして受け取り、作成テーブルの結果であるアイテムを出力することです!
入力
入力は、文字列、長さのリスト、9
またはネストされた2D配列のいずれかとして取得できます。
として入力を取得する場合...
ストリング
表の各項目は、印刷可能なASCII文字(0x20
〜0x7E
)の1文字です。空きスペースを表現するには、使用-
例は、WWW-W-WWW
のようなクラフトテーブルと同じになります
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
| | Wood | |
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
すべてのスペースが保持されている限り、入力を複数行の文字列として受け取ることもできます。
WWW
W
WWW
1D配列
入力を文字配列として受け取ります。この配列では、作成テーブルの空のスペースが空の文字になります。たとえば、上記のテーブルは ['W','W','W','','W','','W','W','W']
2D配列
今回は、各リストはクラフトテーブルの行を表します。空のスペースは空の文字です。 [['W','W','W'],['','W',''],['W','W','W']]
入力は常に作成可能なアイテムに対応すると想定できます。配列入力を使用する場合は、空のcharを省略名として使用されていない任意の文字に置き換えることができます。
出力
出力は、それが何を意味するのかが明白である限り、任意の形式の入力から作成されたアイテムになります。(個人的には、1文字のアイテムの略語を使用します)
材料
この課題でwood
は、木の丸太ではなく、木の板を意味します。
作成時に最も一般的なアイテムを処理するだけです。これらはクラフトの材料ですが、クラフトの製品でもあります。作成レシピは、xxxxxxxxx
上記の文字列入力のような形式に従います。アイテムを作成できない場合は、---------
代わりに配置されます。
いくつかのレシピは形がなく、すべてのアイテムがそこにある限りアイテムが作られることを意味します。これらはで示されます*
。これの例は、pumpkin pie
(このチャレンジの1つではなく)必要pumpkin
でsugar
ありegg
、作られることです。
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-
製品
これは、作成のために処理できるすべての製品のリストです。アイテムが材料でもある場合、ここには含まれませんが、それを処理できる必要があります。それぞれが上記の材料のみを使用して作成でき、それを識別するために一意の小文字が指定されます。アーマー(+
)はあらゆる成分を使用できます[G, I, L, D]
。武器($
)はから作ることができます[W, C, I, G, D]
。ただし、これはコードゴルフサイトであるため、これらのリストを短くする必要があります。[G, I, L, D]
はaで示され、a Q
で[W, C, I, G, D]
示されます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
得点
これらのレシピをすべて実行するように依頼するのは不合理なので、必要なものだけを実行する必要があります!しかし、もちろん、あなたがするほど、あなたのスコアは良くなります。
スコアは次のように定義されます
score = length of program in bytes / number of working recipes squared
たとえば、これは提出物である可能性があります。
input()
print('S')
渡される入力は処理可能なもの(----W--W-
)であると想定できるため、常にoutput S
になりsticks
ます。これはと同等です。これにより、18/1 = 18が得られます。
入力を有効なプログラムにするためには、少なくとも5つの異なる入力を処理できる必要があります。
最低スコアの人が勝ちます。
ルール
- 最低得点
- 受け入れられた任意の方法(関数パラメーター、STDINなど)を使用して入力を取得できます。
- 上記の形式のいずれかでのみ入力できます。制限が厳しくなく、実行可能である必要があります
- 標準的な抜け穴は許可されていません
- 入力する必要があります
5
競合する資格を得るには、少なくとも正しい結果を出力する必要があります。- 金ナゲットなどの形のないレシピの場合、異なる組み合わせは異なるレシピとしてカウントされません。
----W----
レシピと同じであり、レシピ--W------
は1つだけです。 - これと
IIIIIIIII
は逆に、材料ブロックなど、複数の材料を使用するレシピの場合、異なる材料はそれぞれ異なるレシピとしてカウントされRRRRRRRRR
ます。つまり、レシピと同じではありません。
頑張って、Minecrafters!
W--W-----
、-W--W----
、--W--W---
、---W--W--
、----W--W-
、、または-----W--W
。これらのうちの1つだけを処理する必要がありますか?