কিউবিক্য কিউবের মুখগুলি যোগ করুন


13

একটি কিউবিক কিউবের মুখের ম্যানুয়ালি সংমিশ্রণ ক্লান্তিকর এবং সময়োপযোগী, কিউবিকালি নিজেই কোড লেখার মতো বাছাই করা।

ইন সবচেয়ে বেশি কার্যকরী cubifier , আমি Cubically উৎস হওয়া ASCII অনুবাদ করতে আপনাকে জিজ্ঞাসা। উত্তরগুলির মধ্যে একটি কিউব ইনিশিয়ালাইজেশন ক্রম ব্যবহার করে এবং তারপরে প্রাক-আরম্ভকৃত কিউবের অঙ্কের উপর ভিত্তি করে ফলাফল কিউবকে সংশোধন করে। এই পদ্ধতিটি তখন থেকে বহু কিউবিক-সম্পর্কিত প্রোগ্রামগুলিতে ব্যবহৃত হচ্ছে। নতুন আরম্ভের ক্রমটি পরীক্ষা করার সময়, সমস্ত মুখের মধ্যে একটি করে সমস্ত মান যুক্ত করতে হয়, যা সাধারণত দুই বা তিন মিনিট সময় নেয়।

আপনার কাজটি আমাদের জন্য এই প্রক্রিয়াটি স্বয়ংক্রিয় করা!

আপনি দুটি ইনপুট, একটি পূর্ণসংখ্যা nএবং একটি স্ট্রিং নেবেন c। এগুলি কমান্ড লাইন আর্গুমেন্ট, ফাংশন আর্গুমেন্ট, স্ট্যান্ডার্ড ইনপুট, একটি ফাইল বা এর কোনও সংমিশ্রণ থেকে পড়া যেতে পারে। দোভাষী দ্বারা সুন্দর-মুদ্রিত আকারের কিউবিকালি মেমরি কিউবc হবে ।n

কিউবিক্যাল ইন্টারপ্রেটার প্রোগ্রামটি সমাপ্তির পরে এর ঘনকটি STDERR এ ফেলে দেয়, সাধারণ দেখার জন্য সুন্দরভাবে ফর্ম্যাট করে। কিউবিক্যাল ইন্টারপ্রেটারে একটি খালি প্রোগ্রাম চালান এবং একটি আদিশিক্ষিত ঘনক্ষেত্রের ঘনক্ষন দেখতে ডিবাগ বিভাগটি খুলুন। 4একটি 4x4x4 দেখতে, বা 55x5x5 ইত্যাদি দেখতে একটি যুক্তি যুক্ত করুন etc.

যদি n3 হয় তবে cএই ফর্ম্যাটটি অনুসরণ করবে (পূর্ণসংখ্যার পরিবর্তনশীল হবে):

   000
   000
   000
111222333444
111222333444
111222333444
   555
   555
   555

স্পেসস, নিউলাইনস এবং সমস্ত কিছু। যদি n4 cহয় তবে এটির মতো দেখতে হবে (পরিবর্তনশীল পূর্ণসংখ্যার সাথেও):

    0000
    0000
    0000
    0000
1111222233334444
1111222233334444
1111222233334444
1111222233334444
    5555
    5555
    5555
    5555

ইত্যাদি।

আপনার প্রোগ্রামটি ছয়টি পূর্ণসংখ্যা আউটপুট দেবে। প্রথম পূর্ণসংখ্যার শীর্ষ মুখের সমস্ত সংখ্যার যোগফল হবে।

   000
   000          top face
   000
111222333444    left, front, right, and back faces, respectively
111222333444
111222333444
   555
   555          bottom face
   555

দ্বিতীয় পূর্ণসংখ্যাটি বাম মুখের যোগফল, তৃতীয় সামনের, চতুর্থ ডানদিকে, পঞ্চমটি পিছনে এবং নীচে ষষ্ঠটি হবে।

সুতরাং যদি n3 ছিল এবং এটি cছিল:

   242
   202
   242
000131555313
010121535343
000131555313
   424
   454
   424

আপনার প্রোগ্রাম আউটপুট হবে 20 1 14 43 24 33

অতিরিক্ত নিয়ম:

  • আউটপুট পূর্ণসংখ্যার অবশ্যই অ-পূর্ণসংখ্যার অক্ষর দ্বারা সীমিত করা উচিত। আপনি কোনও অ্যারে ফেরত দিতেও চয়ন করতে পারেন।
  • আপনি ধরে নিতে পারেন যে ইনপুটটি সঠিক - nএটি একটি পূর্ণসংখ্যা এবং কিউবিকের ডিবাগিং আউটপুটc থেকে একটি ঘনক । সুতরাং যদি ছিল এবং ছিল , আপনার প্রোগ্রামটি ভাঙ্গতে পারে এবং এখনও বৈধ হতে পারে।n3.0cfoo bar
  • আপনার প্রোগ্রামটি শুধুমাত্র n > 1এবং এর জন্য কাজ করা দরকার n < 1260। এটা তোলে পারে বড়ো বা ছোটো ঘনক্ষেত্র মাপ হ্যান্ডেল (করার প্রচেষ্টা), কিন্তু এটা প্রয়োজনীয় নয়।

এটি , তাই সংক্ষিপ্ততম কোডটি জয়ী! আপনার যদি সাহায্যের প্রয়োজন হয় তবে কিউবিকালি চ্যাটরুমে নির্দ্বিধায় জিজ্ঞাসা করুন ।


আমরা কি ইনপুটটিকে সমস্ত অনুসরণকারী স্থানকে আয়তক্ষেত্র হিসাবে অন্তর্ভুক্ত করার জন্য ধরে নিতে পারি?
অগ্নিনির্বাপক 24

@ ফায়ার ফ্লেম 241 যদি আপনি nপ্রতিটি লাইনের পরে স্পেস বোঝায় , না। এগুলি ডাম্পের অন্তর্ভুক্ত নয়।
এমডি এক্সএফ

1
আমাদের সত্যই একটি "ঘনক্ষেত" ট্যাগ লাগবে।
মিঃ এক্সকডার

@ মিঃ এক্সকোডার স্ট্যাটাসটি সম্পূর্ণ হয়েছে :) আমিও এটি ভাবছিলাম, এবং আমি আরও চারটি কিউবিক চ্যালেঞ্জের এটিএম-এ কাজ করছি।
MD XF

উত্তর:



5

পাইথন 2 , 155 150 147 123 121 120 বাইট

সম্ভবত বেশ কিছুটা গল্ফ করা যেতে পারে

সম্পাদনা: হোয়াইটস্পেসগুলি অপসারণের জন্য আরও ভাল পদ্ধতি ব্যবহার করে -5 বাইট

সম্পাদনা: -৩ বাইট @ লিকি নুনকে ধন্যবাদ

সম্পাদনা করুন: -24 বাইটগুলি সাদা স্থানগুলি সরিয়ে না দিয়ে

সম্পাদনা: -২ বাইট অগ্রাধিকার কাজে লাগিয়ে

lambda n,a:[sum(sum(map(int,b[j*n:][:n]))for b in a.split("\n")[i*n:][:n])for i in range(3)for j in range(~i%2,i%2*2+2)]

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



3

হুশ , 15 বাইট

3 এস এবং 2 mএস

mṁṁiṁoC⁰TC⁰mf±¶

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

ব্যাখ্যা

                  Takes input as two arguments, the first being n, the second, the cube
              ¶   Split second argument into a list of lines
           m      For each line
            f±    keep only the digits (remove spaces)
         C⁰       Cut into lists of length n
    ṁ             Map then concatenate
        T           transpose
     oC⁰            then cut into lists of length n
mṁṁi              Takes list of lists of strings (or, in Husk, a list of lists of lists of chars) and returns the sum of the digits in each list
m                 Map function over list of lists
 ṁ                  map then sum
  ṁ                   map then sum
   i                  convert character to integer

1
mṁṁiসত্যিই সুন্দর!
জগারব

3

অক্টাভা, 64 59 54 বাইট

@(c,n)sum(im2col(c'-48,[n n],'distinct'))([2 5:8 10])

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

পূর্ববর্তী উত্তর:

@(c,n)sparse(kron((1:4)+[0;4;8],!!e(n)),1,c-48)([2 5:8 10])

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

আউটপুট হিসাবে একটি অ্যারে প্রদান করে।


আমি যা প্রত্যাশা করেছি তা নয়, পুরোপুরি বৈধ এবং সত্য বলতে আমি কোনও উত্তর আশা করি না। +1
MD XF

@ এমডিএক্সএফ আপনি কি আশা করেছিলেন?
rahnema1

আমি কোনও উত্তরের এই সংক্ষিপ্তসারটি আশা করিনি, না স্ট্রিং গ্রহণের এই রূপটি। তবে এটি ঠিক কীভাবে অষ্টাভ এটি করে; আমি কখনই অষ্টাভ ব্যবহার করি নি।
MD XF



1

হাস্কেল, 128 বাইট

s n c=filter(>=0)$map(\[x,y]->sum$map(\[v,w]->fromEnum((lines c)!!(x*n+v)!!(y*n+w))-48)$n%n)$3%4
n%m=sequence[[0..n-1],[0..m-1]]

লাইন ব্রেকগুলির সাথে একটি স্ট্রিং গ্রহণ করে।


1

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

param($n,$z)
function f($y){$y-replace' '-split'(.)'-ne''-join'+'|iex}
$a=$z-split"`n"
f $a[0..($n-1)]
$a[$n..(2*$n-1)]|%{$x="($('.'*$n))";$1,$2,$3,$4=$_-split$x-ne'';$h+=$1;$i+=$2;$j+=$3;$k+=$4}
$h,$i,$j,$k|%{f $_}
f $a[(2*$n)..(3*$n)]

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

ওওফ, এটি দীর্ঘ। তবে, স্ট্রিংগুলি বিভক্ত করা এবং টুকরো টুকরো টানা পাওয়ারশেলের অন্যতম শক্তিশালী মামলা নয়, তাই আমার ধারণা এটি কিছুটা প্রত্যাশিত। এছাড়াও - তাই অনেক। ডলার।

যথাক্রমে প্যারামিটারে $nএবং $zআকার এবং কিউব নেট হিসাবে নেয় । তারপরে একটি ফাংশন তৈরি করে যা সর্বত্র ব্যবহৃত হয়। এখানে, আমরা স্থানগুলি অপসারণ করছি, প্রতিটি স্বতন্ত্র ডিজিটের উপর বিভক্ত করে, ফাঁকা অক্ষরগুলি মাঝখানে সরিয়ে নিয়ে, সমস্ত অক্ষরের সাথে এক সাথে যোগদান করব +, এবং তারপরে একটি নম্বর পাওয়ার জন্য ফলাফলটি কার্যকর করব। উদাহরণস্বরূপ, এটি পালাক্রমে "123"মধ্যে 1+2+3যা মৃত্যুদন্ড কার্যকর হয় 6

পরের লাইনটি নতুন লাইনে splitইনপুট কিউব নেট, ফলাফলটিকে অ্যারেতে সংরক্ষণ করে $a। তারপরে আমরা প্রথম $nলাইনগুলিতে ফাংশনটি সম্পাদন করি এবং কিউবের শীর্ষ মুখটি আউটপুট করি।

পরবর্তী সেটটির জন্য, আমাদের কিউব আকারের উপর ভিত্তি করে স্ট্রিংগুলি বিভক্ত করতে হবে। সুতরাং, আমরা প্রতিটি রেখার মধ্য দিয়ে লুপ করব, $xযথাযথ রেজেক্স প্যাটার্ন হিসাবে তৈরি করব (উদাহরণস্বরূপ, আকারের জন্য $n=3এটি হবে "(...)"), সেই প্যাটার্নের উপর ভিত্তি করে স্ট্রিংটি বিভক্ত করুন, আবার খালি উপাদানগুলি সরিয়ে ফেলা এবং চারটি মুখের প্রতিনিধিত্বকারী চারটি ভেরিয়েবলগুলিতে সংরক্ষণ করুন। তারপরে স্ট্রিংটি দিয়ে hজুড়ে দেওয়া হয় k

পরের লাইনে তারপর জাহাজ hমাধ্যমে kঘনক্ষেত্র আউটপুট পক্ষের (বাম, সামনে, ঠিক আছে, ফিরে) এর ফাংশন মাধ্যমে।

শেষ পর্যন্ত, আমরা $nকিউবের নীচের মুখটি আউটপুট করতে ফাংশনটির মাধ্যমে শেষ লাইনগুলি চালাই ।

সমস্ত নম্বর পাইপলাইনে রেখে গেছে, এবং আউটপুট অন্তর্ভুক্ত।


1

এপিএল (ডায়ালগ ক্লাসিক) , 30 27 বাইট

{+/⍎¨6(⍺*2)⍴⍉⊃,⌿3⍺⍴⍵⊂⍨⍵∊⎕D}

@ অ্যাডম ধন্যবাদ 3 বাইট বন্ধ

is n

ব্যাখ্যা

                        ⍵⊂⍨⍵∊⎕D   c partitioned by D (digits 0..9)
                    3⍺⍴           reshape into 3 by n matrix
                 ,⌿              concatenate on first axis (results in n vectors)
              ⍉⊃                  ravel transpose mix (results in a simple string with all digits in side order)
      6(⍺*2)⍴                     reshape into 6 by n squared matrix (one row per side)
 +/⍎¨                            sum rows execute each (execute will turn characters into numbers)

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


আমার কাছে 59 বাইট লাগছে । প্রতিস্থাপন করা হচ্ছে সঙ্গে ⎕U2286শুধুমাত্র যদিও 5 বাইট যোগ করা হবে।
অ্যাডাম

আমার খারাপ, আমি পার্টিশনযুক্ত ছাঁটা ছাড়া এবং ছাড়া খেলছিলাম এবং কেবল ক্লাসিক সংস্করণের জন্য বাইট গণনাটি ব্যবহার করেছি। মাইগ্রেশন স্তর 3 ব্যবহার করার জন্য আমার উত্তরটি সম্পাদনা করবে :)
গিল

1
এছাড়াও, আপনি 3এবং এর মধ্যে স্থান সরাতে পারেন
অ্যাডাম

1
(6,⍺*2) → 6(⍺*2)
অ্যাডাম

1
IFAICT, আপনি প্রয়োজন হবে না ,পরে যেমন সবসময় জটিল করে তোলা, যাতে তার অধিকার যুক্তি ব্যবহার করে।
অ্যাডম

0

কিউবিকভাবে , 19 বাইট

r%0@%1@%2@%3@%4@%5@

STDIN থেকে আকার এবং দোভাষীকে কমান্ড-লাইন আর্গুমেন্ট হিসাবে আকার নেয়। শীর্ষ মুখ, একটি নাল বাইট, বাম মুখ, একটি নাল বাইট, ... নীচের মুখ এবং একটি নাল বাইটের যোগফল আউটপুট করে।

এটি অনলাইন চেষ্টা করুন! ... যা স্পষ্টতই আমার ব্রাউজারে কিছু ধরণের সাদা জায়গা হিসাবে নাল বাইটগুলি প্রদর্শন করে।

এই ভাষা এই চ্যালেঞ্জের জন্য তৈরি করা হয়নি, তবে চ্যালেঞ্জটি ভাষাটির জন্য করা হয়েছিল .... এটি কি এখনও প্রতারণা করছে? ;)

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