সিএসআই: মাইনক্রাফ্ট আইটেম


22

মাইনক্রাফ্ট 1.12 আগামীকাল প্রকাশিত হবে, তাই আসুন উদযাপন করা যাক!

এমন একটি কোড লিখুন যা একটি অ-নেতিবাচক পূর্ণসংখ্যক এন নেবে যা মাইনক্রাফ্টের কোনও আইটেমের সংখ্যা উপস্থাপন করে । এটি খেলোয়াড়দের জন্য আরও উপকারী একটি উপায়ে আউটপুট করুন, চেস্ট, স্ট্যাক এবং আইটেম N এর সমতুল্য নম্বর দিন। বিন্যাসটি ব্যবহার করুন

XcYsZi

কোথায়

  • X আপনি সম্পূর্ণরূপে এন আইটেমগুলিতে পূরণ করতে পারেন এমন বুকের সংখ্যা,
  • Y চেস্ট পূরণের পরে অবশিষ্ট আইটেমগুলি আপনি পূরণ করতে পারেন এমন স্ট্যাকের সংখ্যা,
  • Z যদি বুকে এবং স্ট্যাকগুলি পূরণ করার পরে আইটেমের সংখ্যা থাকে।

মনে রাখবেন যে:

  • 64 টি আইটেম একটি স্ট্যাক মধ্যে মাপসই। (আমরা 16 টি স্ট্যাক করা বা স্ট্যাক না করে এমন আইটেমগুলিকে উপেক্ষা করব))
  • 27 টি স্ট্যাক একটি বুকে ফিট করে। (এগুলি একক বুক, ডাবল বুকে নয়))

সুতরাং এটি কখনই Y26 এর বেশি বা Z63 এর বেশি হলে কোনও অর্থ হবে না ।

বিন্যাস সহ একটি সতর্কতা হ'ল যদি কোনও কিছুর শূন্য থাকে তবে সেই শব্দটি মুদ্রিত হয় না।

  • সুতরাং, উদাহরণস্বরূপ, যদি Yশূন্য Xএবং Zননজারো হয় তবে ফর্ম্যাটটি দেখতে ভাল লাগবে XcZi

  • অনুরূপভাবে যদি Yএবং Zশূন্য এবং ছিল Xঅশূন্য, বিন্যাস হবে Xc

  • এখানে ব্যতিক্রম হ'ল এন শূন্য হয়। তারপরে 0iখালি স্ট্রিংয়ের পরিবর্তে আউটপুট।

আপনি ধরে নিতে পারেন যে সমস্ত এন আইটেম একই ধরণের, তাই সমস্ত স্ট্যাকযোগ্য।

আপনি তিনটি সংখ্যার তালিকা বা দ্বিগুণ আউটপুট নাও পেতে পারেন। আপনাকে অবশ্যই যথাযথ "সিএসআই" স্বরলিপি দিয়ে একটি ক্রম দিতে হবে, যাতে কোনও ক্রম বা কমা নেই।

রেফারেন্সের জন্য, এখানে একটি বুক পুরোপুরি আইটেমের স্ট্যাক দিয়ে পূর্ণ:

মাইক্রাফ্ট একক বুকে 27 স্ট্যাক হীরা দিয়ে ভরাট

Testcases

in -> out
0 -> 0i
1 -> 1i
2 -> 2i
62 -> 62i
63 -> 63i
64 -> 1s
65 -> 1s1i
66 -> 1s2i
127 -> 1s63i
128 -> 2s
129 -> 2s1i
200 -> 3s8i
512 -> 8s
1337 -> 20s57i
1664 -> 26s
1727 -> 26s63i
1728 -> 1c
1729 -> 1c1i
1791 -> 1c63i
1792 -> 1c1s
1793 -> 1c1s1i
4096 -> 2c10s
5183 -> 2c26s63i
5184 -> 3c
5200 -> 3c16i
9999 -> 5c21s15i
385026 -> 222c22s2i
1000000000 -> 578703c19s

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।



33
ঠিক আছে আপাতদৃষ্টিতে এটি একটি অপরাধ দৃশ্যের তদন্ত
Okx


@ ওকএক্স আমি শিরোনামটি পড়েছি এবং ভেবেছিলাম এটি ক্লু / ক্লুয়েডোর কোনও রূপ হতে চলেছে তবে মাইনক্রাফ্টের জন্য।
কায়ার্ড কইনিরিংহিংহ

@Oxx সমস্ত স্পিনঅফস নিয়ে যা অবাক হওয়ার মতো হবে না। এখন আমাদের একটি চক্রের আউটলাইন অঙ্কন করে একটি চ্যালেঞ্জ দরকার - একটি লতার সম্ভবত
ক্রিস এইচ

উত্তর:


11

জেলি ,  26  24 বাইট

d64d1¦27Fża¥“csi”Fḟ0ȯ⁾0i

একটি পূর্ণ প্রোগ্রাম নম্বর গ্রহণ এবং ফলাফল মুদ্রণ।
এটা আমার কাছে অনেক দীর্ঘ মনে হচ্ছে ...

এটি অনলাইন চেষ্টা করুন! অথবা পরীক্ষার স্যুটটি দেখুন

কিভাবে?

আপডেট হচ্ছে ...

d64d1¦27Fża¥“csi”Fḟ0ȯ⁾0i - Main link: number n
 64                      - literal 64
d                        - divmod (whole divisions and remainder)
      27                 - literal 27
    1¦                   - apply to index 1 (the whole division from above)
   d                     - divmod
        F                - flatten into a single list (of three items i.e. [(n/64)/27, (n/64)%27, n%64]
            “csi”        - literal ['c','s','i']
           ¥             - last two links as a dyad:
         ż               -   zip
          a              -   logical and (any 0s in the divmod result become [0,0], others become [integer, character]
                 F       - flatten (from list of three lists to one list)
                  ḟ0     - filter discard zeros
                     ⁾0i - literal ['0','i']
                    ȯ    - logical or (non-vectorising)
                         - implicit print (smashed together representation, so [578703,'c',19,'i'] prints as 578703c19i)

7

রেটিনা , 49 48 41 বাইট

.+
$*i
i{64}
s
s{27}
c
(.)\1*
$.&$1
^$
0i

এটি অনলাইন চেষ্টা করুন! টিআইওর ওভারলোড হওয়ার ক্ষেত্রে শেষ ব্যতীত সমস্ত পরীক্ষার কেস অন্তর্ভুক্ত করে। সম্পাদনা করুন: @ মার্টিনইেন্ডারকে ধন্যবাদ 7 টি বাইট সংরক্ষণ করা হয়েছে ব্যাখ্যা:

.+
$*i

iগুলি ব্যবহার করে ইনপুট নম্বরটি অ্যানারিতে রূপান্তর করুন ।

i{64}
s

Items৪ টি আইটেম একটি স্ট্যাক পূরণ করে।

s{27}
c

27 টি স্ট্যাক একটি বুকে পূরণ করে।

(.)\1*
$.&$1

যেকোন বুক, স্ট্যাক বা বাকী আইটেমকে দশমিক রূপান্তর করুন, তবে ধরণটি প্রত্যয় হিসাবে রেখে।

^$
0i

যদি ইনপুটটি শূন্য হয়, ফলাফলটি তৈরি করুন 0i


ওহ আমার এটি কি বাস্তবে আনারিতে রূপান্তরিত করে প্রতিস্থাপন করা হচ্ছে?
জোনাথন অ্যালান

@ জোনাথান অ্যালান আমি একটি ব্যাখ্যা যুক্ত করেছি (আমার আগে দুঃখিত ছিল না)। (ব্যাখ্যাটি লেখার ফলে আমাকে একটি
নীল

2
আপনি যে কিছু এড়াতে পারেন $.&: এই মত অনুলিপি tio.run/##FYs9DsIwDIX3d46ASpGq2Ens5ARcAiEQYsjCQNmqnj21Lb9veD@/...
মার্টিন Ender

@ মার্টিন ইন্ডার আহ, আমি ভাবছিলাম যে এটির iপরিবর্তে সরাসরি রূপান্তর করা সার্থক হবে কিনা 1, তবে আমি কেবল এই সরলকরণটি দেখতে পেলাম না, ধন্যবাদ!
নীল

4

সি #, 84 86 বাইট

_=>(_/1728>0?_/1728+"c":"")+((_-=_/1728*1728)/64>0?_/64+"s":"")+(_%64>0?_%64+"i":"")

ইনলাইন বিয়োগফল লক্ষ্য করুন, এটি সম্ভব ছিল বুঝতে পারলেন না তবে i--বোধগম্য হন কেন তাই নয়i-=10

সম্পাদনা:

_=>_>0?(_/1728>0?_/1728+"c":"")+((_%=1728)/64>0?_/64+"s":"")+(_%64>0?_%64+"i":""):"0i"

0 প্রান্তের কেস এবং পরামর্শের জন্য।


1
+1 টি। আর তুমি পরিবর্তন করতে পারেন _-=_/1728*1728থেকে _%=1728গলফ কয়েক বাইট।
কেভিন ক্রুজসেন

এছাড়াও, আপনি প্রান্তের কেসটি ভুলে গিয়েছিলেন 0, যার ফলস্বরূপ হওয়া উচিত 0iএবং বর্তমানে কোনও কিছুই আউটপুট হচ্ছে না। সহজভাবে যুক্ত করা _>0?...:"0i"ঠিক করে দেবে।
কেভিন ক্রুজসেন

@ কেভিন ক্রুজসেন আহ, আপনাকে ধন্যবাদ
লিফডওয়েভেন

3
>_>সম্পাদিত একের জন্য +1
স্নিগ্ধ সহকারী কোইনরিঙ্গিংহ

3

পাইথন 3 , 87 বাইট

lambda n:g(n//1728,"c")+g(n//64%27,"s")+g(n%64,"i")or"0i"
g=lambda n,s:(str(n)+s)*(n>0)

এটি অনলাইন চেষ্টা করুন!


পাইথন ২-এ এটিকে 62 বাইটে ছোট করা যেতে পারে, সহজ বিভাগ ব্যবহার করে (এর / পরিবর্তে //) এবং এর পরিবর্তে ব্যাকটিক অপারেটর ব্যবহার করা যায়str(...)
গ্যাবার ফেকেট

3

05 এ বি 1 ই , 24 বাইট

1728‰`64‰)˜…csiøvyJ¬0Êi?

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

1728‰                      # input divmod 1728 (64*27)
     `                     # split as separate with mod result on top of stack
      64‰                  # divmod 64
         )˜                # wrap stack in flattened list
           …csiø           # zip with the string "csi"
                vy         # for each
                  J        # join amount with storage-type
                   ¬0Êi    # if head != 0
                       ?   # print

এটি কীভাবে 0ইনপুট ক্ষেত্রে কাজ করে এবং অন্যান্য ইনপুটগুলি না করে কেন এটি কেন একটি ট্রেলিং নিউলাইন প্রিন্ট করে?
জোনাথন অ্যালান

@ জোনাথান অ্যালান: যদি কিছু মুদ্রিত না হয় তবে 05 এ বি 1 ই ফাঁসি কার্যকরভাবে স্ট্যাকের শীর্ষটি মুদ্রণ করে (নিউলাইন সহ)। For-loops বিরতি তালিকা পৃথক করে এবং স্ট্যাক উপাদানগুলিকে ধাক্কা দেয়, তাই মুদ্রিত না হয় যে কোনও আইটেম স্ট্যাক যোগ করা হবে। 0ক্ষেত্রে লুপের শেষে 0iস্ট্যাকের শীর্ষে থাকবে ( 0sএবং 0cএটির অধীনে থাকবে) এবং মুদ্রণ করা হবে।
এমিগনা

3

সি, 85 87 105 110 111 112 বাইট

#define a(x,y)x?printf("%d%c",x,y+99):0;
f(z){a(z/1728,0)a(z%1728/64,16)!z+a(z%64,6)}

এখানে চেষ্টা করুন

কোড এমনকি নেতিবাচক সংখ্যায় সঠিকভাবে কাজ করে। আপনি এখন সার্ভারের ওপি ব্লককে পাওনা রাখতে পারেন!


ফাংশনগুলি পিপিসি
বিটা

3

জাভাস্ক্রিপ্ট (ES6), 77 76 বাইট

n=>[n+1,1728,64,1].map((v,i,a)=>(v=n%a[--i]/v|0)?v+'csi'[i]:'').join``||'0i'

পরীক্ষার মামলা



2

সিজেম , 31 বাইট

ri64md\27md@]"csi"]z{0=},"0i"e|

এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

ri                               e# Read an int from input.
  64md                           e# Divmod by 64, gives total #stacks, #items.
      \27md                      e# Divmod total #stacks by 27, gives #chests, #stacks.
           @                     e# Bring #items back to top.
            ]                    e# Wrap in an array: [#chests, #stacks, #items]
             "csi"               e# Push "csi".
                  ]z             e# Zip with the other array.
                    {0=},        e# Filter out subarrays where the first element is 0.
                         "0i"e|  e# Logical or with "0i". An input of 0 gives an empty array
                                 e# from the rest of the program, in that case yield "0i"
                                 e# instead.

1

জাভাস্ক্রিপ্ট (ES6) 71 বাইট

n=>[n/1728|0,(n/64|0)%27,n%64].map((a,i)=>a?a+'csi'[i]:'').join``||'0i'

স্নিপেট:



1

ব্যাচ, 347 335 283 246 234 202 199 191 189 বাইট

@set/al=%1,c=%1/1728,l-=c*1728,s=l/64,l-=s*64
@set c=%c%c
@set s=%s%s
@set i=%l%i
@if %c%==0c set c=
@if %s%==0s set s=
@if %i%==0i set i=
@if %c%%s%%i%.==. set i=0i
@echo(%c%%s%%i%

আপনি কি জানেন যে আপনি একটি set/aঅভিব্যক্তিতে বিভাগ এবং মডুলাস ব্যবহার করতে পারেন , তাই না?
নীল

@ নীল আমি জানি, আমি এখন ঠিক একইভাবে কাজ করছি
স্টিভেফস্টেল

@ নীল আমি কেবল একটি সমস্যার মুখোমুখি হয়েছি: if %c%==0 (set c=)else remএই কোডগুলি আমাকে " (setপ্রত্যাশিত নয় " দেয়
স্টিভেফস্টল

হু, কেবলমাত্র সি খালি থাকলেই তা হওয়া উচিত ...
নীল

1
জেএফটিআর আমার দ্রবণ (একই দৈর্ঘ্যের সাথে দুটি সামান্য ভিন্ন ভিন্নতা) নিচে 122 বাইটে নেমেছে।
নীল


0

গণিত, 155 বাইট

A=AppendTo;G={};P=Print;(z=Mod[t=Mod[#,1728],64];If[(x=⌊#/1728⌋)>0,A[G,{x,c}]];If[(y=⌊t/64⌋)>0,A[G,{y,s}]];If[z>0||#==0,A[G,{z,i}]];Row@Flatten@G)&


0

টি-এসকিউএল, 139 134 139 বাইট

ইনপুট কলাম মধ্যে সংরক্ষিত হয় একটি বিদ্যমান প্রাক টেবিলের টি

SELECT IIF(a=0,'0i',REPLACE(IIF(a<1728,'',STR(a/1728)+'c')
                           +IIF(a%1728<64,'',STR(a%1728/64)+'s')
                           +IIF(a%64=0,'',STR(a%64)+'i'),' ',''))FROM t

পাঠযোগ্যতার জন্য লাইন বিরতি, মোট বাইটে গণনা করা হয় না। এমএস এসকিউএল সার্ভার ২০১২-তে পরীক্ষা করা হয়েছে।

সম্পাদনা 1: 5 টি বাইট সংরক্ষণ করতে একাধিক পরিবর্তন REPLACEহয়েছে IIFফাইনাল REPLACEএখনও প্রয়োজনীয় কারণSTR বিরক্তিকরভাবে 10 টি অক্ষরে স্পেস দিয়ে প্যাড।

সম্পাদনা 2: এসকিউএল এর জন্য অনুমোদিত ইনপুট টাইপ, একটি নামযুক্ত টেবিলের মধ্যে সঞ্চিত মান ব্যবহার করে নিয়মাবলী অনুসরণ করতে স্থির । এই ব্যয়গুলি বাইটগুলির পরিবর্তে FROMপ্রয়োজন SELECTহয় PRINT। অপ্রয়োজনীয় পেরেন্স ফেলে দিয়ে 2 বাইট উদ্ধার করে।


0

পাওয়ারশেল, 113 বাইট

param($i)("$(($c=[math]::floor($i/1728)))c","")[!$c]+("$(($s=[math]::floor(($i%1728)/64)))s","")[!$s]+"$($i%64)i"

এটি খুব স্পষ্টভাবে পাওয়ারশেলের ব্যথার পয়েন্টগুলিকে আঘাত করে।

[math]::Floor পিএস ডিফল্টরূপে ব্যাংকারদের রাউন্ডিংয়ের জন্য এটির জন্য প্রয়োজনীয়।

পিএস টেরনারি অন্যান্য ভাষার তুলনায় আমাদের কাছে একটি সাধারণ নাল কৌতূহল ( $a="This";$a?$a:"That"বা "This"?:"That") করার জন্য বাইটগুলি নিয়ে যায়(($a="This"),"That")[$a-ne$null]

তারপরে পাওয়ারশেলের ডিফল্ট অপারেশন অর্ডারের কারণে আমাদের এগুলি দুটি বার ব্যবহার করতে হবে এবং কয়েকটি জায়গায় বন্ধনীগুলির আরও একটি সেট যুক্ত করতে হবে।



আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.