ডেনিস, ডুরকনব, মার্টিন বাটনার, ক্রিস জেস্টার-ইয়াং - পিজ্জারিয়া!


42

প্রোগ্রামিং ধাঁধা এবং কোড গল্ফ একটি নতুন মডারেটর , ডেনিস পেতে চলেছে ! এই চ্যালেঞ্জটি তাঁকে এবং আমাদের অন্যান্য সক্রিয় (বা সম্প্রতি সক্রিয়) মডারেটরদের জন্য শ্রদ্ধাঞ্জলি: ডুরকনব , মার্টিন বাটনার এবং ক্রিস জেস্টার-ইয়ং । চ্যালেঞ্জ শিরোনাম বোঝানো হয়েছে পেপ্টো বিসমল গানের সুরে পড়তে ।

মূলত, আমরা তাদের সকলের দিকে পিজা আচরণ করতে যাচ্ছেন উনবিংশ Bite পিজা , কিন্তু আমরা নিশ্চিত ভাগ মোটামুটি কারণ করতে হবে কিছু এর mods, পিজা আসক্ত হিসেবে পরিচিত হয়!

পিজ্জারিয়ার বিক্রি হওয়া পিজ্জাগুলি সমস্ত পাঠ্যের আয়তক্ষেত্রাকার ব্লক। একটি পিজা এর প্রস্থ এবং দৈর্ঘ্য যতক্ষণ না তাদের পণ্য চারটি দ্বারা বিভাজ্য হয় ততক্ষণ কোনও অ-নেতিবাচক পূর্ণসংখ্যা হতে পারে। পাঠ্য পিজ্জার ব্লকের প্রতিটি গ্রিড স্থান একটি স্লাইসকে উপস্থাপন করে, তাই টুকরাগুলি চারটি সমান গ্রুপে বিভক্ত করা সর্বদা সম্ভব possible

মোডগুলি সম্মিলিতভাবে একটি একক পিজ্জা অর্ডার করবে, এর প্রস্থ এবং দৈর্ঘ্যের পরামিতিগুলি তাদের সার্ভারে কোনও যুক্তিসঙ্গত বিন্যাসে সরবরাহ করবে যেমন [width],[length]। পিজ্জা তাদের টেবিলে পৌঁছানোর ঠিক আগে, আপনি প্রতিটি স্লাইসটি মোডের প্রারম্ভিকের সাথে লেবেল করা উচিত যারা এগুলি খেতে পাবে তারা সকলেই মোটামুটি ভাগ করে নেবে তা নিশ্চিত করার জন্য। প্রত্যেকেরই একই সংখ্যার টুকরো পাওয়া উচিত।

  • E ডেনিসের জন্য
  • D ডোরকনব এর জন্য
  • M মার্টিনের জন্য
  • C ক্রিসের জন্য

মোডগুলি সামান্য দৃnic়প্রবণতা এবং তাদের স্ব স্ব টুকরোগুলির সেটগুলি সংযোগযুক্ত হওয়া আবশ্যক , এটি হ'ল যে তাদের সমস্ত স্লাইসগুলি একে অপরের থেকে উপরে, নীচে, বাম এবং ডানদিকে গিয়ে পৌঁছে যায়, অন্য কারোর ক্রস না ​​করে can টুকরা (এবং তির্যক চলন্ত না)। যতক্ষণ না এটি করা হয় ততক্ষণ আপনি কীভাবে এটি করবেন তা চিন্তা করবেন না ।

একবার আপনি প্রতিটি স্লাইসকে সঠিকভাবে লেবেল করে নিলে anচ্ছিক ট্রেলিং নিউলাইন দিয়ে পিজ্জা মোডগুলিতে পৌঁছে দিন।

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

উদাহরণ

উদাহরণ 1

ক্রম: 4,1

কিছু সম্ভাব্য লেবেলযুক্ত পিজ্জা:

EDMC
MEDC
CDEM

উদাহরণ 2

ক্রম: 4,4

কিছু সম্ভাব্য লেবেলযুক্ত পিজ্জা:

MMMM
CCCC
DDDD
EEEE
DEMC
DEMC
DEMC
DEMC
CCCC
DEEM
DEEM
DDMM

উদাহরণ 3

ক্রম: 8,3

কিছু সম্ভাব্য লেবেলযুক্ত পিজ্জা:

MMMMMMCC
DDDDCCCC
DDEEEEEE
DDDCMMMM
DCDCMEEE
DCCCMEEE

উদাহরণ 4

ক্রম: 20,5

সম্ভাব্য লেবেলযুক্ত পিজা:

DDDDDDDDDDDDMCCCCCCCCCCC
DEEEEEEEEEEDMMMMMMMCCCCC
DEEEEEEEEEEDMMMCCCCCCCCC
DEEEEEEEEEEDMMMMMMMMCCCC
DDDDDDDDDDDDMMMMMMMMMMMC

( Dএখানে এগুলি কেবল সংযুক্ত নয়, তবে এটি ঠিক)


12
@ বেটাডেকে এটি মূলত ডায়রিয়ার ছড়াছড়ি ডিভাইস।
ক্যালভিনের

28
তাদের প্রয়োজন যে তাদের নিজ নিজ স্লাইসগুলির সেটগুলি সংযোগযুক্ত করে দেওয়া উচিত । এটি কিছুটা ভীতিজনক যে আপনি আমার সম্পর্কে তা জানতেন ...
ডেনিস

22
ঠিক আছে, কি দিয়ে এই অদ্ভুত আয়তক্ষেত্রাকার-রূপরেখা আকৃতির পিজা ফালি তুমি দিয়েছ করেছি? আমি ফেরত চাই!
ডুরকনব

12
@ ফ্লোয়ার আপনার পছন্দ নয়, নন-মোড।
ক্যালভিনের

14
" কামড়ের মধ্যে ক্ষুদ্রতম লেবেলারের জয়" - আমি সেখানে আপনি কী করেছেন তা আমি দেখতে পাচ্ছি।
ডানক্মিমেস

উত্তর:


21

সিজোম, 20 বাইট

q~1$*4/"CEDM"e*/:$N*

আমি এই কাজ করা উচিত :)

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

ব্যাখ্যা:

এটি প্রথমে সিসি… EE… ডিডি… এমএম… লেবেলযুক্ত বাম থেকে ডান এবং উপরে থেকে নীচে পিজ্জা তৈরি করে, তারপর প্রতিটি সারি বর্ণমালা অনুসারে বাছাই করে। কেবলমাত্র সিই বর্ডার এবং ইডি বর্ডার, বা ইডি বর্ডার এবং ডিএম বর্ডারের (যদি তারা সংলগ্ন সারিগুলিতে পড়ে) কেবলমাত্র বিচ্ছিন্নতা ঘটতে পারে। তবে বাছাই করা নিশ্চিত করে যে E এর ডান দিকে যেতে হবে এবং ডি বাম দিকে যাবে, সি <ই> ডি <এম হিসাবে, তাই ই এবং ডি এর সাথে সংযুক্ত থাকবে।

q~          read and evaluate the input
1$          copy the width
*4/         multiply with the height and divide by 4
"CEDM"e*    repeat each letter in "CEDM" that many times
/           split into rows of the given width
:$          sort each row
N*          join with newlines

1
ডোরকনব এবং আমার দ্বারা ভাগ করে নেওয়া সারিগুলিকে বেছে বেছে উল্টে দেওয়া। এর এক চালাক ব্যবহার $!
ডেনিস

8

পাইথ, 30 25 বাইট

jb.eu_GkbceQs*R/*FQ4"EDMC

লাইভ ডেমো এবং সমস্ত পরীক্ষার কেস

@ জাকুবকে ধন্যবাদ 5 টি বাইট কাটা!

আমার কে উত্তর হিসাবে একই অ্যালগরিদম ... তবে অনেক খাটো।

30-বাইট সংস্করণ:

jb.e?%k2_bbcjkm*/*FQ4d"EDMC"hQ

50-বাইট সংস্করণের জন্য লাইভ ডেমো এবং সমস্ত পরীক্ষার কেস


7

কে, 61 বাইট

{[a;b]{((+:;|:)@x!2)[r@x]}'!#r:(b;a)#,/{(_(a*b)%4)#x}'"EDMC"}

উদাহরণ:

ryan@DevPC-LX:~/golf$ rlwrap k2
K 2.8 2000-10-10 Copyright (C) 1993-2000 Kx Systems
Evaluation. Not for commercial use. 
\ for help. \\ to exit.

  `0:{[a;b]{((+:;|:)@x!2)[r@x]}'!#r:(b;a)#,/{(_(a*b)%4)#x}'"EDMC"}[4;1]
EDMC
  `0:{[a;b]{((+:;|:)@x!2)[r@x]}'!#r:(b;a)#,/{(_(a*b)%4)#x}'"EDMC"}[4;4]
EEEE
DDDD
MMMM
CCCC
  `0:{[a;b]{((+:;|:)@x!2)[r@x]}'!#r:(b;a)#,/{(_(a*b)%4)#x}'"EDMC"}[8;3]
EEEEEEDD
MMMMDDDD
MMCCCCCC
  `0:{[a;b]{((+:;|:)@x!2)[r@x]}'!#r:(b;a)#,/{(_(a*b)%4)#x}'"EDMC"}[20;5]
EEEEEEEEEEEEEEEEEEEE
DDDDDDDDDDDDDDDEEEEE
DDDDDDDDDDMMMMMMMMMM
CCCCCMMMMMMMMMMMMMMM
CCCCCCCCCCCCCCCCCCCC

ryan@DevPC-LX:~/golf$ 

এই জিনিসটি কাটতে হবে এমন ব্যক্তি হতে আমি ঘৃণা করব ...


দেখে মনে হচ্ছে এটি পিছনে পিছনে zig-zags, উপরে থেকে নীচে। এটা কি ঠিক? (এটি কি কাজ করবে 1,8?)
ক্যালভিনের

@ ক্যালভিনের শখগুলি এটি ইনপুটটির জন্য কাজ করে বলে মনে হচ্ছে।
kirbyfan64sos

1
আমি একই পদ্ধতির ব্যবহার করতে যাচ্ছিলাম এবং আমি নিশ্চিত যে এটি কার্যকর হয়। এটি সি হারিস যদিও।
ডেনিস

পছন্দ করুন সংশোধন করা হয়েছে।
kirbyfan64sos

7

পাইথ, 20 বাইট

VceQs*L/*FQ4"CEDM"SN

@ অদিতসুর বাছাইয়ের কৌশল ব্যবহার করে।

প্রদর্শন.

আমি এটিকে গল্ফ দেওয়ার চেষ্টা করার সময় একই দৈর্ঘ্যের বিপুল সংখ্যক বিকল্প প্রোগ্রাম নিয়ে এসেছি:

VceQs*L/*FQ4"CEDM"SN
VceQsCm"CEDM"/*FQ4SN
VceQs*L*FQ"CEDM"%4SN
VceQ%4s*L*FQ"CEDM"SN
VcQs*L/*Qvz4"CEDM"SN    (Newline separated input)
jbSMceQs*L/*FQ4"CEDM
Vcs*L/*FQ4"CEDM"hQSN

6

আটকে , 42 33

ফিরে আসে! এবং ভয়ঙ্কর দীর্ঘ ফর্ম। :)

t;g*4/[4*"CEDM"z"];F*":j0GK'$:Nj

ব্যাখ্যা:

t;g*4/                              # Take |-separated input,
                                    #   store the first value in var stack,
                                    #   multiply the two numbers and divide by 4.
      [4*"CEDM"z                    # Wrap that value in an array, make 3 copies
                                    #   to get a list of length 4, zip with "EDMC"
                "];F*":j0GK         # For each item, multiply letter by value to
                                    #   to get string, join the result, split into
                                    #   segments the size of the saved variable.
                            '$:Nj   # For each item, sort so the letters are in the correct
                                    #   order, join by newline, print.

উদাহরণ ইনপুট:

20|5

উদাহরণ আউটপুট:

CCCCCCCCCCCCCCCCCCCC
CCCCCEEEEEEEEEEEEEEE
DDDDDDDDDDEEEEEEEEEE
DDDDDDDDDDDDDDDMMMMM
MMMMMMMMMMMMMMMMMMMM

আপনি কি নিশ্চিত যে এটি কেবল সংযুক্ত হবে 8|3?
yo '

@ আপনি 'হ্যাঁ। এটি আউটপুট CCCCCCEE\nDDDDEEEE\nDDMMMMMM
কেড

/ me_stupid, এর জন্য দুঃখিত।
yo

4

রেভ 1 সি, 74

i;f(w,h){for(i=w*h;i--;i%w||puts(""))putchar(h-i/w*2==1^"CDEM"[i*4/w/h]);}

1-বাইট সাশ্রয়ের জন্য, এই সংস্করণটি কোনও বিজোড় সংখ্যক সারিগুলির জন্য স্লাইসগুলির মাঝারি সারিটি (কেবল) বিপরীত করে।

রেভ 0 সি, 75

i;f(w,h){for(i=w*h;i--;i%w||puts(""))putchar(h==3&i/w==1^"CDEM"[i*4/w/h]);}

এখানে অনেক উত্তর জিগজ্যাগ, তবে বেশিরভাগ ক্ষেত্রে কেবলমাত্র অক্ষরগুলি ক্রমানুসারে আউটপুট করা (বাম থেকে ডানে, উপরে থেকে নীচে) ভাল কাজ করে:

1,2 বা 4 উচ্চতার জন্য জিগজ্যাগ করার দরকার নেই

4 এর চেয়ে বেশি উচ্চতার জন্য জিগজ্যাগ করার দরকার নেই (প্রতিটি মোডের পিজ্জা রেশন চারপাশে মোড়ানো হবে))

সুতরাং উচ্চতা 3 যখন আমাদের কেবল তখনই জিগজ্যাগ করা প্রয়োজন এবং তারপরে আমাদের কেবল মাঝারি সারিটি বিপরীত করা দরকার।

দেখা যাচ্ছে যে ডেনিস এবং ডুরকনব এই সারিটির একমাত্র মোড। এবং তাদের এএসসিআইআই কোডগুলি 1 দিয়ে XORing করে সেগুলি বিনিময় করা যায়।

এটি সহজেই দেওয়া হয়েছে যে সিতে কোনও স্ট্রিং বিপরীত করার সহজ উপায় নেই

পরীক্ষা প্রোগ্রামে অসম্পূর্ণ

i;
f(w,h){
  for(i=w*h;i--;i%w||puts(""))            //loop through all squares. puts inserts a newline at the END of each line.
  putchar(h==3&i/w==1^"CDEM"[i*4/w/h]);   //put the letter, XORing D and E for the middle row of height 3.
}

W,H;
main(){
  scanf("%d%d",&W,&H);
  f(W,H);
} 

দুর্দান্ত ব্যাখ্যা।
ট্রিকোপলাক্স

1

জাভাস্ক্রিপ্ট (ES6) 107

জিগজ্যাগ সলিউশন। টেমপ্লেট স্ট্রিং ব্যবহার করে, নতুন লাইনটি তাৎপর্যপূর্ণ এবং গণনাযোগ্য।

ফায়ারফক্সের সাথে স্নিপেট চালানোর পরীক্ষা করুন।

f=(w,h)=>{for(i=o=r='',z=l=1;--l?l:c='CDEM'[l=w*h/4,i++];r[w-1]&&(o+=r+`
`,r='',z=!z))r=z?r+c:c+r;return o}


//TEST

(test=_=>([w,h]=I.value.match(/\d+/g),O.innerHTML=f(w,h)))()
<input id=I value='8 3'><button onclick='test()'>-></button>
<pre id=O></pre>


0

রেটিনা , 83 বাইট

এই উত্তরে ব্যবহৃত বৈশিষ্ট্যগুলি এই চ্যালেঞ্জের চেয়েও নতুন (এটি গুরুত্বপূর্ণ নয় ...)। বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।

\d+
$*#
#(?=.*¶(.+))
$1
\G####
CDEM
S_`((.)+?(?=.*¶(?<-2>#)+$))|\D
O`.
T`DE`ED
O%`.

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

এটি অ্যাডিটসুর সমাধানটি বাস্তবায়িত করে যা এখন নতুন সাজানোর পর্যায়ে কিছুটা সম্ভাব্য ধন্যবাদ।

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