আমি যে কারুকাজ করব?


21

মাইনক্রাফ্টে 21 টি আইটেম রয়েছে যা আপনি কেবল কাঠ এবং কাঠ থেকে তৈরি কারিগরগুলি ব্যবহার করে কারুকাজ করতে পারেন :

কুড়াল
নৌকা
বাটি
বোতাম
বুকে
কারুকাজ টেবিলের
দরজা
বেড়া
গেট
নিড়ানি
মই
পিক্যাক্স
তক্তা
চাপ প্লেট
বেলচা
সাইন
স্ল্যাব
সিঁড়ি
লাঠি
তরোয়াল
trapdoor

এই তালিকাটি ধরে নিয়েছে যে 6 বিভিন্ন ধরণের কাঠের ফলস / স্ল্যাব / দরজা / ইত্যাদি। সমস্ত একই আইটেম হিসাবে গণনা। এটির ভাবনার আর একটি উপায় আপনার কাছে কেবল এক ধরণের কাঠের অ্যাক্সেস রয়েছে তা ধরে নেওয়া।

এই 21 টি আইটেমের প্রত্যেকের আলাদা আলাদা কারুকাজের রেসিপি রয়েছে । আমরা এই রেসিপিগুলির প্রত্যেকটির একটি 2 × 2 বা 3 × 3 অক্ষরের গ্রিড হিসাবে উপস্থাপন করব .WPS., একটি খালি ক্রাফ্টিং স্লট হয় Wজন্য কাঠ , Pজন্য কাঠ তক্তা , এবং Sজন্য লাঠি । এই নির্দিষ্ট আইটেমগুলির জন্য অন্য কোনও অক্ষরের প্রয়োজন নেই।

উদাহরণস্বরূপ, এটি একটি বুকের জন্য রেসিপি :

PPP
P.P
PPP

চ্যালেঞ্জ

আমাদের 21 আইটেমগুলির মধ্যে একটির নাম হিসাবে নেওয়া এমন একটি প্রোগ্রাম লিখুন, যেমনটি উপরে প্রদর্শিত হবে এবং সেই আইটেমটির জন্য একটি বৈধ কারুকাজের রেসিপি প্রিন্ট করে।

কারুশিল্পের রেসিপিগুলি অনুবাদ অদম্য, তাই যদি ইনপুট হয় তবে এই fenceদুটিই বৈধ:

PSP
PSP
...
...
PSP
PSP

যদি কোনও রেসিপি 2 × 2 গ্রিডে ফিট করে তবে আপনি এটি 2 2 × 2 বা 3 × 3 গ্রিডে আউটপুট করতে পারেন। যেমন stick:

.P
.P
...
.P.
.P.

রেসিপিগুলি আনুভূমিকভাবে প্রতিবিম্বিত করা যেতে পারে (প্রতিসাম্যের উল্লম্ব রেখার চারপাশে), যদিও এটি কেবল কুড়াল, নিড়ানি এবং সিঁড়ির জন্য একটি পার্থক্য তৈরি করে। যেমন hoe:

.PP
.S.
.S.
PP.
.S.
.S.

সুতরাং গ্রিডের সাথে খাপ খায় এমন কোনও রেসিপি আউটপুট করা এবং সঠিক আকারের (অনুবাদ এবং আয়না উপেক্ষা করা) আপনার প্রোগ্রামটি করার দরকার। এটি সরকারী গেমটি স্বীকৃতি দেবে এমন সমস্ত রেসিপি। (দ্রষ্টব্য যে রেসিপিগুলি উল্লম্বভাবে ঘোরানো বা মিরর করা যায় না))

বিস্তারিত

  • স্টিডিন বা কমান্ড লাইন থেকে ইনপুট নিন। আপনি ধরে নিতে পারেন ইনপুটটি সর্বদা বৈধ। ইনপুট (উদাঃ "chest") এর চারপাশে উদ্ধৃতি প্রয়োজন ঠিক আছে।
  • একটি বিকল্প ilingচ্ছিক নতুন লাইনের সাথে স্টডআউট (বা নিকটতম বিকল্প) আউটপুট।
  • বাইটস মধ্যে সংক্ষিপ্ততম জমা জয়।

উদাহরণ

সমস্ত ইনপুট এবং নমুনা আউটপুটগুলির একটি তালিকা এখানে রয়েছে:

axe
PP.
SP.
S..

boat
P.P
PPP
...

bowl
P.P
.P.
...

button
P.
..

chest
PPP
P.P
PPP

crafting table
PP
PP

door
PP.
PP.
PP.

fence
PSP
PSP
...

gate
SPS
SPS
...

hoe
PP.
S..
S..

ladder
S.S
SSS
S.S

pickaxe
PPP
.S.
.S.

planks
W.
..

pressure plate
PP
..

shovel
P..
S..
S..

sign
PPP
PPP
.S.

slab
PPP
...
...

stairs
P..
PP.
PPP

stick
P.
P.

sword
P..
P..
S..

trapdoor
PPP
PPP
...

1
আপনার আউটপুট নমুনা দেওয়া, আমি কোন ব্যতিক্রম দেখতে পাচ্ছি না। সবগুলি মিরর করা যায়, তবে বেশিরভাগই প্রতিসম হয়।
edc65

যেহেতু "বাইটে" হল UTF-8 কাউন্টার লিঙ্ক, তার মানে আমরা না আছে হল UTF-8 বাইট গণনা কিভাবে?
মার্টিন ইন্ডার

শুধুমাত্র সম্পূর্ণ প্রোগ্রাম? কোন ফাংশন নেই?
অ্যালেক্স এ।

@ অ্যালেক্স এ।
ক্যালভিনের

@ মার্টিনব্যাটনার এটি তৈরি করুন। (আপনি কেন জানেন, যদিও এটি সম্ভবত আর কোনও বিষয় নয়:: পি)
ক্যালভিনের

উত্তর:


15

সিজেম, 100 96 94 91 বাইট

"+WcbKF AQH;_{GM8Lyf=_tmTn"141bDb3/l72b970%={Z"O>HVa=4a"98bZb+"P.SW"f=3/=}%N*

স্ট্যাকএক্সচেঞ্জ মঙ্গলগুলি অনিদ্রিতযোগ্য, তাই এখানে অনুলিপি করা এবং পেষ্ট করার চেয়ে পারমালিঙ্ক । অতিরিক্তভাবে, এখানে পরীক্ষা প্রোগ্রামটি

( fআমাকে সিজেমের মডুলো ইনডেক্সিং সম্পর্কে বলার জন্য @ অপ্টিমাইজার এবং @ মার্টিনব্যাটনার সম্পর্কে ধন্যবাদ জানাই ।)

সাইগউইনের hexdump:

0000000 0122 2b1e 571a 6308 621f 4b05 2046 5141
0000010 1608 1848 5f3b 1115 1d7b 4d47 4c38 6679
0000020 5f3d 6d74 0c54 226e 3431 6231 6244 2f33
0000030 376c 6232 3739 2530 7b3d 225a 1b4f 483e
0000040 6156 343d 2261 3839 5a62 2b62 5022 532e
0000050 2257 3d66 2f33 7d3d 4e25 002a          
000005b

ব্যাখ্যা

রেসিপিগুলি তৈরি করতে, আমরা 13 টি পৃথক সারি ব্যবহার করি (এটি তালিকা কেন ন্যূনতম তা ব্যাখ্যা করা হয়):

0    W..    (required by planks)
1    ...    (required by many)
2    .PP    (required by many)
3    PPP    (required by chest)
4    .P.    (required by bowl)
5    ..P    (required by stairs)
6    S.S    (required by ladder)
7    SSS    (required by ladder)
8    .S.    (required by sign)
9    .SP    (required by axe)
10   P.P    (required by bowl)
11   PSP    (required by fence)
12   SPS    (required by gate)

মাধ্যমে আমরা সারি এনকোড Z"O>HVa=4a"98bZb+"P.SW"f=3/, যা দেয়

["W.." "..." ".PP" "PPP" ".P." "..P" "S.S" "SSS" ".S." ".SP" "P.P" "PSP" "SPS"]

প্রথম বিট "+WcbKF AQH;_{GM8Lyf=_tmTn"141bDb3/রেসিপিগুলি এনকোড করে দেয়

[[3 3 8] [1 0 0] [1 0 0] [3 8 8] [1 3 3] [2 8 8] [6 7 6] [1 0 0] [1 10 3] [1 1 2] [2 2 2] [1 11 11] [1 1 4] [1 0 1] [1 10 4] [2 9 8] [3 10 3] [1 2 2] [4 8 8] [1 4 4] [1 1 3] [1 12 12] [4 4 8] [5 2 3]]

প্রথম এন্ট্রিটি কীভাবে তা [3 3 8]রেসিপিটি নোট করুন sign

l72b970%=ইনপুটটিতে পড়ে, তারপরে তালিকা থেকে কোন রেসিপিটি গ্রহণ করা হবে তা কার্যকর করার জন্য কিছু জাদু প্রয়োগ করে। যদিও আমাদের কাছে কেবল 21 টি রেসিপি রয়েছে তালিকায় 24 টি রয়েছে - অতিরিক্ত কয়েকটি দাগ [1 0 0]এস এর সাথে মিলে যায়।

ইনপুটটি পড়ার পরে, রেসিপিটি বাছাই করে এবং রেসিপিটিকে সারিতে রূপান্তরিত করার পরে আমরা কয়েকটি নতুনলাইন N*এবং অটো-প্রিন্ট রেখেছি ।


সিজেম, 89 86 83 বাইট

'W"9=!%)S@*m:@DQzk?V$%qyR55AmVEpPNW}"132b3b"P.S"f=+3/3/l57b5342%24%(=N*

... এটি দেখা যাচ্ছে যে সমস্ত আউটপুট হার্ডকোডিং সিজেমে কিছুটা ভাল করে। আমি বেশ হতাশ।

আবার আমরা কিছু unprintables তাই এখানে আছে পার্মালিঙ্ক এবং পরীক্ষা প্রোগ্রাম

সাইগউইনের hexdump:

0000000 5727 0222 3d39 1021 2925 531e 2a40 6d0b
0000010 403a 1844 7a51 3f6b 2456 7125 5279 3506
0000020 4135 046d 1a56 7045 1550 164e 1057 7d01
0000030 3122 3233 3362 2262 2e50 2253 3d66 332b
0000040 332f 6c2f 3735 3562 3433 2532 3432 2825
0000050 4e3d 002a                              
0000053

ব্যাখ্যা

আউটপুটগুলি বেস 3 ব্যবহার করে এনকোড করা হয়, Wসারি দেওয়ার জন্য স্ট্রিং 3s বিভক্ত হওয়ার আগে একাকীটি সম্মুখভাগে ট্যাক করা হয়, এবং রেসিপিগুলি দেওয়ার জন্য সারিগুলি 3s এর গ্রুপে বিভক্ত করা হয়।

উপরের মত, বেস রূপান্তরকারী এবং মডুলো যাদু রেসিপিটি নির্বাচন করতে ব্যবহৃত হয়। এখানে 22 টি রেসিপি রয়েছে (একটি অব্যক্ত) তবে আমাদের মডিউল 24 নেওয়া দরকার, সুতরাং আমাদের অবশ্যই 24%মডিউল ইনডেক্সিংয়ের উপর নির্ভর না করে স্পষ্ট করে এই সময়টি নির্দিষ্ট করতে হবে ।


আপনি কি একটি হেক্সডাম্প পোস্ট করতে পারেন xxd? পার্মালিঙ্কস ফায়ারফক্সে কাজ করে না।
n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳

@ n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳ দুর্ভাগ্যক্রমে আমি উইন্ডোজে আছি, সুতরাং আমি এখনের জন্য পরবর্তী সেরা জিনিসটি পরিচালনা করতে পারি।
Sp3000

6

জাভাস্ক্রিপ্ট (ES6), 235 241 262

নিয়মের আরও বেশি আপত্তিজনক সম্পাদনা করুন ইনপুটটি সর্বদা বৈধ: এখানে কেবলমাত্র 1 টি আইটেম রয়েছে যার জন্য ডব্লু দরকার হয় এবং এটি বিশেষ কেসযুক্ত হতে পারে। সুতরাং আউটপুট গ্রিডটি 9 অঙ্কের বেস 3 নম্বর হিসাবে এনকোড করা হয়েছে।

পপআপের মাধ্যমে I / O সহ 235 বাইট।

w=prompt();
"926a722boa182bo2b19520ch224c6056d644f448g764h7651l2294pi8pr758sh2915si26sl19172sta56st785s728t"
.replace(/(\d+)(\D+)/g,(c,p,m)=>w.search(m+z)||[for(c of'11\n11\n111')z+='.SP'[~~p%3]+(p/=3,-c?'':c)],z='');
alert(&&z||'W.\n..')

221 বাইট একটি পরীক্ষামূলক ফাংশন হিসাবে।

F=w=>"926a722boa182bo2b19520ch224c6056d644f448g764h7651l2294pi8pr758sh2915si26sl19172sta56st785s728t"
.replace(/(\d+)(\D+)/g,(c,p,m)=>w.search(m+z)||[for(c of'11\n11\n111')z+='.SP'[~~p%3]+(p/=3,-c?'':c)],z='')&&z||'W.\n..'

সর্বদা 3x3 গ্রিড হিসাবে আউটপুট। 4 টি উপলব্ধ আউটপুট সিমোবোল সহ, গ্রিডটি 3x3x2 (18) বিট নম্বর হিসাবে এনকোড করা হয়েছে। এবং ইনপুটটি সর্বদা বৈধ হতে হবে বলে স্ট্রিংটি সর্বনিম্ন ছাঁটাই করা থাকে।

টেস্ট সালে ফায়ারফক্স / ফায়ারবাগ কনসোলটি

;["axe", "boat", "bowl", "button", "chest", "crafting table", "door", 
 "fence", "gate", "hoe", "ladder", "pickaxe", "planks", "pressure plate", 
 "shovel", "sign", "slab", "stairs", "stick", "sword", "trapdoor"]
.forEach(v=>console.log(v+'\n'+F(v)))

আউটপুট

axe
PP.
SP.
S..

boat
P.P
PPP
...

bowl
P.P
.P.
...

button
P..
...
...

chest
PPP
P.P
PPP

crafting table
PP.
PP.
...

door
PP.
PP.
PP.

fence
PSP
PSP
...

gate
SPS
SPS
...

hoe
PP.
S..
S..

ladder
S.S
SSS
S.S

pickaxe
PPP
.S.
.S.

planks
W.
..

pressure plate
PP.
...
...

shovel
P..
S..
S..

sign
PPP
PPP
.S.

slab
PPP
...
...

stairs
P..
PP.
PPP

stick
P..
P..
...

sword
P..
P..
S..

trapdoor
PPP
PPP
...

2

পাইথন, 305 বাইট

n=2**(23-hash(raw_input())/535366%24);print "W..\n...\n..." if n==1024 else "\n".join(["".join(['P' if [16706041,9740732,7635081,7399784,5267501,7372808,57344,57344,49152][j+i*3]&n==n else 'S' if [6,2097152,6,131078,10748162,6,131138,9699584,2][j+i*3]&n==n else '.' for j in range(3)]) for i in range(3)])

ব্যাখ্যা

# Compute a unique number for each item.
# 535366 and 24 are precalculated values that were bruteforced.
n = 23 - hash(raw_input()) / 535366 % 24

# Use precalculated tables that represent which ingredient in this recipe of
# an item. The nth bit of p[0] will be set if the first ingredient of the item
# associated with the unique number n is some planks. It works the same for s.
p = [16706041,9740732,7635081,7399784,5267501,7372808,57344,57344,49152]
s = [6,2097152,6,131078,10748162,6,131138,9699584,2]

# Handle planks differently, as it is the only one using wood.
if n == 10:
    print "W..\n...\n..."
else:
    for i in xrange(3):
        line = ""
        for j in xrange(3):
            # Now we can check if the ingredient is some planks...
            if p[j + i * 3] & 1 << n == 1 << n:
                line += 'P'
            # ...or if it is some sticks...
            elif s[j + i * 3] & 1 << n == 1 << n:
                line += 'S'
            # ...or if it is simply empty.
            else:
                line += '.'
        print line

মন্তব্য

এই কোডটি অবশ্যই সবচেয়ে ক্ষুদ্রতম নয় তবে এটি ঠিক কাজ করে। আমি সন্তুষ্ট. :)

পাইথন, 282 বাইট

n=hash(raw_input())/808789215%21;print "\n".join(["P.PPPP...P..S..S..PP.......PP.PP....P........SPSSPS...PPPPPP.S.PP.PS..S.W........PPPPPP...PP..S..S.P..PP.PPPS.SSSSS.SPPP.S..S.PPP......P..P..S..PPPP.PPPPPSPPSP...PP.PP.PP.P..P.....P.P.P...."[9*n+i*3:9*n+(i+1)*3] for i in range(3)])

একটি অনন্য শনাক্তকারী তৈরি করতে একই কৌশলটি ব্যবহার করে তবে সরাসরি অ্যারেতে রেসিপিটি সন্ধান করা। এটি আমার প্রথম কোডের চেয়ে অনেক সহজ এবং সামান্য কমপ্যাক্ট।


'প্ল্যাঙ্কস' এর জন্য একটি বিশেষ কেস থাকলে আপনি স্ট্রিংটি সংক্ষিপ্ত করতে পারেনW.\n..
edc65
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.