Minecraft Üretim Masası Yap


15

Minecraft'ta bir şeyi nasıl yapacağınızı hatırlayamadığınızda nefret etmiyor musunuz? Bunu düzeltmenin vakti geldi!

Görev

Göreviniz 1D veya 2D liste olarak bir girdi almak ve işçiliği tablosunun bir sonucu olan çıktıyı almaktır!

Giriş

Girdiyi dize veya uzunluk listesi olarak alabilirsiniz 9 veya 2B iç içe dizi olarak alabilirsiniz.

Bir giriş olarak alırsanız ...

sicim

Tablodaki her öğe yazdırılabilir ASCII karakterinde ( 0x20to 0x7E) 1 karakterdir . Boş bir alanı temsil etmek için, -örneğin WWW-W-WWW,

+------+------+------+
| Wood | Wood | Wood |
+------+------+------+
|      | Wood |      |
+------+------+------+
| Wood | Wood | Wood |
+------+------+------+

Tüm boşluklar korunduğu sürece girişi çok satırlı bir dize olarak da alabilirsiniz;

WWW
 W 
WWW

1D dizisi

Girdiyi, işçiliği tablosundaki boş alanların boş bir karakter olacağı bir karakter dizisi olarak alırsınız; örneğin, yukarıdaki tablo ['W','W','W','','W','','W','W','W']

2D dizi

Bu kez, her liste işçiliği tablosundaki bir boşluğu temsil eder; burada boş bir alan boş bir karakterdir; [['W','W','W'],['','W',''],['W','W','W']]

Girişin her zaman işlenebilen bir öğeye karşılık geleceğini varsayabilir ve dizi girdisi kullanıyorsanız, boş karakteri kısaltılmış ad olarak kullanılmayan herhangi bir karakterle değiştirebilirsiniz.

Çıktı

Çıktı, ne anlama geldiği açık olduğu sürece, girdiden, istediğiniz herhangi bir biçimde hazırlanmış bir öğe olacaktır. (Şahsen, öğelerin 1 harfli kısaltmalarımı kullanırdım)

malzemeler

Bu meydan okuma için, woodahşap kütükler değil, ahşap plakalar anlamına gelir.

Üretim yaparken sadece en yaygın öğeleri kullanmanız gerekir. Bunlar işçiliğin bileşenleridir, ancak işçiliğin ürünleri de olabilir. Üretim tarifi, xxxxxxxxxyukarıdaki dize girişi gibi formatı takip eder . Bir öğe hazırlanamazsa, ---------bunun yerine yerleştirilir.

Bazı tarifler şekilsizdir , yani tüm öğeler orada olduğu sürece, öğe yapılacaktır. Bunlar a *. Bunun bir örneği olacağını pumpkin piesadece ihtiyacı olduğunu (değil kimse bu meydan içinde) pumpkin, sugarve eggyapılacak.

   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-

Ürün:% s

Bu, işçilik için kullanabileceğiniz tüm ürünlerin bir listesidir. öğe de bir bileşense, buraya dahil edilmeyecektir, ancak yine de ele alabilmelisiniz . Her biri sadece yukarıdaki bileşenler kullanılarak üretilebilir ve onu tanımlamak için benzersiz, küçük bir harf olarak adlandırılır. Armor ( +) herhangi bir bileşeni kullanabilir [G, I, L, D]. Silahlar ( $) yapılabilir [W, C, I, G, D]. Bu bir sitesi olduğundan, bu listeleri daha kısa yapmamız gerekiyor. [G, I, L, D]bir ile gösterilir Qve [W, C, I, G, D]bir ile gösterilir 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

puanlama

Sizden tüm bu tarifleri yapmanızı istemek mantıksız olacağından, sadece istediğiniz tarifleri yapmanız yeterlidir! Ama elbette, ne kadar çok yaparsanız puanınız o kadar iyi olur.

Puan,

score = length of program in bytes / number of working recipes squared

Örneğin, bu bir başvuru olabilir.

input()
print('S')

Geçirilen girişin işleyebileceği ( ----W--W-) bir giriş olacağını varsayabileceğiniz gibi, her zaman çıkışa Seşdeğer olacaktır sticks. Bu skor 18/1 = 18 olur .

Geçerli bir program olmak için girdiyi almalı ve en az 5 farklı girdiyi işleyebilmelisiniz .

En düşük puanı alan kişi kazanır.

kurallar

  • En düşük puan kazanır
  • Kabul edilen herhangi bir yöntemi (işlev parametreleri, STDIN vb.) Kullanarak girdi alabilirsiniz.
  • Yalnızca yukarıdaki formlardan birinde girdi alabilirsiniz. Çok kısıtlayıcı değildir ve uygulanabilir olmalıdır
  • Standart boşluklara izin verilmiyor
  • Girdi almalısınız
  • 5Rakip olarak kalifiye olabilmek için en azından doğru sonuçları vermelisiniz .
  • Biçimsiz örneğin altın külçeler olan tarifleri için farklı kombinasyonlar yok farklı tarifler olarak sayılır. ----W----ile aynıdır (tarif bakımından)--W------ ve sadece 1 reçetedir.
  • Bunun kapak tarafında, malzeme blokları gibi birden fazla malzeme kullanan tarifler için, her farklı malzeme farklı bir tarif olarak sayılır, yani IIIIIIIIIaynı değildir (tarif bakımından) RRRRRRRRR.

İyi şanslar, Minecrafters!


1
çubukları tarafından hazırlanmış olabilir W--W-----, -W--W----, --W--W---, ---W--W--, ----W--W-, ya da -----W--W. bunlardan sadece birini mi yoksa hepsini mi ele almamız gerekiyor?
tsh

dizeler dizisi olarak girdi alabilir miyim? (örn. ["WWW", "CIC", "CRC"])
dzaima

1
Minecraft Code, 5 bayt cevaplar
Sihirli Ahtapot Urn

1
@MagicOctopusUrn Minecraft Java ile yazılmış, bu yüzden mümkün değil: p
dzaima

1
Minecraft Kodu: Girdi, bir işçiliği tablosundaki bir yapılandırmadır ve çıktı, işçiliği tablosundaki çıktıdır. Kolay. : p / s
HyperNeutrino

Yanıtlar:


6

Python 2 , Puan: 0.0636347

715 bayt, tüm 106 tarifler

import zlib,base64
i=input()
x=`sorted(i)`[2::5]
W=zlib.decompress(base64.b64decode('eNpVUglywyAMfJEeEUPqaoKPQTPFzf8fUq0O6iyyLJsFLUhERMOM6Gx0ngj2HWYYijXBiZ6oid8EM7nZYhhW0orvTiS2qxK6PhHCmO+B527UYK3dA5+qVGG13gOf0lyr5YyAUjxN+SZDKPZsLXawXXxKsW3bcNB8wYrC3PWI8X6/7RiMaRlYrhQpCPSnMAIVIisCzSEVgV87yGYgm4FsBrKZJFOSKcmUZEoy1V7mv5KjaxeqRz2Og+i/rE7GaSyAfgtwcxbgOvI2DOB+/gH39ue8rkt2/drF+mfY8CpbVYVk19lT8QOHavXoDo7H/QsSa1Rg9HgXLqWXKEEvRHknIW4ebyqOgHkqhn/2p/JZmJ+s3qV6ledxvGHQP7KqyI9GlejS4lqIvm1AzhCYopmn8OAYTIx3oeKh0KzLsnjy2W1RIMe2YRNzSGH4AwHh7JI='))
d={W[l:l+9]:'SBMaZZZZZikeEVbcebcebcebcddqddqfghjlmnnnnnooooorrrrrs#`4ppppp6qvq_tuw1zy3279058|!!!!@(%q^&/){~}:\'];"><?.,['[l/9]for l in range(0,len(W),9)}
if i in d:x=i
print d[x]

Çevrimiçi deneyin!

Malzeme varyasyonları da dahil olmak üzere belirtilen tüm tarifleri işler.

Tüm çalışma tariflerinin bir sözlüğünü oluşturur (uzunluğu 9 olan).

Biçimsiz tarifler, giriş dizesini sıralayarak ve bunları sözlüğe karşı kontrol ederek dahil edilir.

Düzenleme: Dize sıkıştırmasına geçti ve notjagan sayesinde kodda 7 bayt kaydedildi




@dzaima Zırh sadece 4 vairants (GILD) vardır, bu yüzden 106
TFeld

1
@TFeld oh evet, kömür zırhı yok: |
dzaima

3

Mathematica, skor: 0.0482378 0.0540228 0.0543788

542 607 611 bayt, 106 tarifin tümü

Sıkıştırılmış verileri yeniden düzenlemek için -4 bayt

Geçersiz girdilerle başa çıkma yeteneğini kaybettiği için -65 bayt

"4/a[:chwpb?_oqjB%',>!6aM7^s<S@1|dfi~g38y&.nz}25#0r;]`mVe{v)b\"l9(tZE"~StringTake~{#&@@Join@@StringPosition[Uncompress@"1:eJw9UVuOgzAMrHoS9yglsGnUJkAsLYj92wv0/n+dsU3HZoAwfnL7f3f9u14uEtiKFDrIXgHc9IsXaQWEjo/uQDHjFxU6gt0MfiKy7Psuq9CVKVycACcoXrIsEQ6oF3euJBwOw+CNAUwSSNZx9NManSnGmCLmelrRH+R38ebFxO5Tn6wNFGwqjUmtK85rwHOtFVElNsWoh5mV+dbyy2ohQZbcs5hlzXx21MoBlEtbgF8SgzbMqRJJnrGfnviqsZpU7OTcIbUlftzDIIOM8zjP83EcPjy5x29aJRaXUmzekClUk/rUIbsD+2kcspOonKjXhhYaeD0hPbr6AOvmjtk=",#<>""&/@{v=#/.""->" ",Sort@v,v/.(#|##2&@@Characters@"GLIDWCYR"->"Q")}]/9+8/9}&

Girişi 1D listesi olarak al {"W", "W", "", "", ...}

Genişletilmiş ve net sürüm:

TableOfNames~StringTake~{# & @@ 
      Join @@ StringPosition[
        Uncompress@CompressedRecipeTable,
        # <> "" & /@ {v = # /. "" -> " ", Sort@v, 
          v /. (# | ##2 & @@ Characters@"GLIDWCYR" -> "Q")}]/9 + 8/9} 
 &

Büyük Uncompress, tüm birleşimlerin bir araya getirilmiş bir dize tablosu.

"        WI II IIII     WWWW   SSSSSSSSSSLSSSSQQQQ QQ QWW WW WW    I \
I I QQQ S  S    W W W WWWWWW S      PXXX Q  Q  S QQ  S  S CCCC CCCC   \
PL PP    W WWWWS SSSSS SSSSSMSSSSWWWBBBWWW      QQ         C   WW WW  \
  NN NN WWWWDWWWW   I IIII K  S  F W  WW WWW    W  W    ERECCC  S SNS \
N   CCC   Q QQQQQQQ   MMMWWWII II II    H H H WWWW WWWW   I   I     S \
 C  G GRG G G GGSGGRG       MM QQ SQ S PPPPVPPPP   SWSSWS    I   \
KCCCC CCRC I  S  W WWWCICCRC Q  S  S    IIIIII   HHHHHH B DODOOOZZZ I \
III I IRI I QQQQ Q      CCCCCC        GI IISII I   Q QQ Q     \
AAAAXAXAXAXAXWWWWRWWWWISIIEIISISN S NSN QQQQQQQQQ R  S    "

StringPosition sırayla eşleşmeyi arar: girdinin kendisi, sıralanmış girdi (şekilsiz tarif için), zırh, silah, baskı plakası.

# & @@ Join @@ ilk ortaya çıktığı yeri döndürür.

/9+8/9sonuç tablosundaki dizini hesaplar ve StringTakeo konumda karakteri alır.


2

SOGL V0.12 , 325 322 317 316 bayt / 106 ^ 2 = 0.0281238875 skoru

3∫HA"-?%mΛe*▓╔Υι§ā⅜β¬kēōΠ»t ‰CV↓ZΟΚΨpΝ∫3υ≤↕‰č⅛c╚≤Æ⁷/←;[piυ¦╗⌠⁄⁸qη╔@O;┐√)cR█9ιZ׀l»░(■DΛQ-╥76PT─ō4ο3ū^╝/9»¾κλCβ׀+!'▼vw-№█⁷$▒d`Σ⅟Ιž⁴n≡,`!m≤Σ═╥∫Κ‽∆Q>+g=¼⁾⁽D┐?─D○≠6τ╝ZTΞķ⅜∑²V=]4Æ⁴℮lT$¡sψī1 ◄δ)⅞/Σ/Δō»ņe#≥ζz⅛yB÷B⅞⁵Kβn┘g⁵ķ»<§└≡↓θ○‼¼ņΔε⁄z‼Ζ∙Φ6β⅜c≈Νycm!=V○Jεκ~  :I)ΩS‘U9ndW:? ~Δ" $*+-=\x”Z+čøŗ"SEBMZV”+W←,a‽"9╚πw⁽νQσ_‘č┌ŗD}a?□D

Açıklama:

3∫                    3 times repeat (on each it'll try something else)
  HA                    save 1-indexed iteration - 1 on variable A
    "..‘                push a string of the recipes
        U               uppercase it (as lowercase was ~7 bytes shorter)
         9n             split into and array of strings of length 9
           d            load the variable D (by default string input)
            W           get the variables 1-based index in that array, 0 if not found
:?                  ←   if [it isn't 0], leaves the input on the stack
   ~Δ                     get the ascii characters from space to ~ (inclusive)
     "..”                 push " $*+-=\x", the characters that are in the ASCII but not used
         Z+               add the uppercase alphabet to that (as most of it can't be outputted)
           čøŗ            filter those out
              "..”+       append to it the uppercase characters that are used - "SEBMZV"
                   W      get in the finished string the character at the index gotten before the if
                    ←     exit, outputting that
       ,                push the input
        a‽        }     if the 0-based index is not [0] (aka if this is the 1st time in the loop)
          "..‘            push "RDYWCDCIGL" - characters that are either of the groups of Q, J or the pressure plate
              č┌ŗ         replace [in the pushed input, each of those characters, with a dash]
                 D        save on variable D - used in the IF above
                   a?   if the 0-based index [is == 0] (aka if this is the 2st time in the loop, soon-to-be 3rd/last)
                     □    sort [the previously pushed input]
                      D   save on the variable D

Buradan Deneyin! veya aşağıdakileri çalıştırarak test edin (yanlış olanı söyleyecektir):

var arr = `      WW  !\n      CC  !\n      II  !\n      GG  !\n     AAAA "\n I  S  W  #\n   W WWWW %\nG GGSGGRG &\nS SSSSS S '\nISIIEIISI (\nI IISII I )\nSSSSMSSSS ,\n       MM .\nI II IIII /\nWWWCICCRC 0\n  S SNS N 1\n    I   K 2\n   I   I  3\n        W 4\nW         4\n    W     4\n      W   4\nCCCC CCRC 5\n        C 6\n     C    6\nC         6\nWWWWDWWWW 7\n    S  C  8\nWWWWRWWWW 9\nSSSSLSSSS :\n   IIIIII ;\nW  WW WWW <\nWWWBBBWWW >\nWWWWWW S  ?\n   ERECCC @\n   SSSSSS [\n   HHHHHH ]\n   I IIII ^\n     PXXX _\n XP    XX _\nX   XP  X _\nXXXP      _\n B DODOOO \`\n   G GG G b\nGGGG GG G c\nG GGGGGGG d\nGGGG G    e\n   I II I b\nIIII II I c\nI IIIIIII d\nIIII I    e\n   L LL L b\nLLLL LL L c\nL LLLLLLL d\nLLLL L    e\n   D DD D b\nDDDD DD D c\nD DDDDDDD d\nDDDD D    e\n   MMMWWW f\nWWWW WWWW g\nWW WW WW  h\nII II II  i\nCCCC CCCC j\n   WW WW  k\nXAXAXAXAX l\nZZZ I III m\n WW SW S  n\n W  W  S  o\nWWW S  S  p\nWW  S  S  q\n W  S  S  r\n CC SC S  n\n C  C  S  o\nCCC S  S  p\nCC  S  S  q\n C  S  S  r\n II SI S  n\n I  I  S  o\nIII S  S  p\nII  S  S  q\n I  S  S  r\n GG SG S  n\n G  G  S  o\nGGG S  S  p\nGG  S  S  q\n G  S  S  r\n DD SD S  n\n D  D  S  o\nDDD S  S  p\nDD  S  S  q\n D  S  S  r\n K  S  F  s\nSN S NSN  t\n   W W W  u\n        G v\n      G   v\n   G      v\nG         v\n   I I I  w\n G GRG G  y\nPPPPVPPPP z\n   CCCCCC {\n   CCC    |\n   SWSSWS }\n   H H H  ~\n    W  W  S\n R  S     E\n   PL PP  B\n   NN NN  M\nGGGGGGGGG Z\nIIIIIIIII Z\nLLLLLLLLL Z\nDDDDDDDDD Z\n I IRI I  V`.split("\n");
toLog = "";
arr.forEach(f=>{
  inputs.value = f.substring(0,9);
  runClicked();
  correct = f.charAt(10);
  got = output.value;
  if (got != correct)
    toLog+= "\""+ inputs.value +"\": expected \""+ correct +"\", got \""+ got +"\".";
})
console.log(toLog);

0

Jelly , skor 0.00173611111

4 / (48 ^ 2) = 0.00173611111 puan

OṢḄỌ

Boş alan için tireli dize olarak girdi alır, örn -----WWWW.

Bu geçerli olduğunu düşünüyorum çünkü meydan okuma diyor

Çıktı, ne anlama geldiği açık olduğu sürece , girdiden, istediğiniz herhangi bir biçimde hazırlanmış bir öğe olacaktır . (Şahsen, öğelerin 1 harfli kısaltmalarımı kullanırdım)

1 harfli kısaltmalar, bunun çıktıları kadar kafa karıştırıcıdır, bu nedenle bu çıktı ne anlama geldiği yeterince açıktır.

Bu, girdinin program tarafından belirtildiği gibi işleyebileceği bir varsayım olduğunu varsayar.

geçirilen girişin işleyebileceği bir giriş olduğunu varsayabilirsiniz.

Çevrimiçi deneyin!

Test Suite (Üstbilgi ve altbilgi çıktıyı güzelleştirir) Bu, 48 tarifin tümünü yapar ve adlarını verir.

Nasıl çalışır

Bu gerçekten çok zayıf bir karma işlevidir.

OṢḄỌ - main link, input e.g. ZZZ-I-III
O      - character codes e.g. [90, 90, 90, 45, 73, 45, 73, 73, 73]
 Ṣ     - sort. This helps shapeless recipes and keeps recipes such as TNT in CJK 
           e.g. [45, 45, 73, 73, 73, 73, 90, 90, 90]
  Ḅ    - convert from binary to integer e.g. 26670
   Ọ   - chr: convert from integer to character e.g.栮

@Downvoter Neden downvote? Bu bildiğim kadarıyla şartnamelere uyuyor.
fireflame241
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.