কোয়ালস, ক্র্যাবস এবং কমপিলারস


21

দুটি ধনাত্মক পূর্ণসংখ্যার এক্স এবং ওয়াই দেওয়া হয়েছে, নিম্নলিখিত তিনটি এসসিআইআই-আর্ট প্রাণীর যেকোন সংমিশ্রণ যেমন আউটপুটে হ'ল এক্স কমাস ( ,) এবং ওয়াই পিরিয়ড ( .) সম্ভব হয়, আউটপুট দেয় ।

  1. কোয়ালা: 1 টি কমা, 2 পিরিয়ড

    <.,.>
    
  2. কাঁকড়া: 2 টি কমা, 2 পিরিয়ড

    ,<..>,
    
  3. কমাপিলার: 3 বা আরও বেশি কমা, 1 পিরিয়ড

    <,,,.>
    

    বা <,,,,.>বা <,,,,,.>বা <,,,,,,.>বা <,,,,,,,.>ইত্যাদি

যদি এই প্রাণীর কোনও সংমিশ্রণটি ঠিক এক্স কমা এবং ওয়াই পিরিয়ড তৈরি করতে না পারে তবে ব্যর্থতা ছড়িয়ে দেবে এমন একক কমলেনিয়ানকে আউটপুট করুন:

~<.,,>~~

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

উদাহরণস্বরূপ, এক্স = 7, ওয়াই = 5 এর জন্য এগুলি সমস্ত বৈধ আউটপুট (খালি লাইন দ্বারা পৃথক) হবে:

<.,.> <.,.> <,,,,,.>

<.,.>
<,,,,,.>
<.,.>

,<..>, <.,.> <,,,,.>

<,,,,.>
,<..>,
<.,.>

,<..>, <,,,.> ,<..>,

[",<..>,", ",<..>,", "<,,,.>"] (list syntax depends on language)

নোট করুন (কমপক্ষে এই উদাহরণে) কাজ করার চেয়ে প্রাণীর একাধিক সেট রয়েছে। তবে মনে রাখবেন আপনার কেবলমাত্র একটি বৈধ সমাধান আউটপুট করতে হবে, যদি এটি বিদ্যমান থাকে। প্রাণীর সংখ্যা বা স্বতন্ত্র প্রাণীর সংখ্যা কোনও বিষয় নয়।

এক্স = 3, ওয়াই = 3 বা এক্স = 1, ওয়াই = 5 এর মতো ইনপুটগুলির জন্য যেখানে কোনও সমাধান নেই, ফলাফল সর্বদা থাকবে

~<.,,>~~

সম্ভবত একটি একক উপাদান তালিকায়।

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


6
কোয়ালার মতো দেখতে :-)
লুইস মেন্ডো

আমি একটি ছোট প্রোগ্রাম তৈরি করেছি যা প্রতিটি জোড়া (এক্স, ওয়াই) এর সংমিশ্রণের সংখ্যাকে ছাড়িয়ে যায়। দুর্ভাগ্যক্রমে, আমি কেবল এটি চালিয়ে যেতে পারি (128, 128) কারণ এটি প্রায় সর্বাধিক __int128এবং আমি একটি বিগনাম লাইব্রেরি ব্যবহার করতে খুব অলস ছিল। এখানে সিএসভি ডাম্প রয়েছে: পেস্টবিন .
com

উত্তর:


4

রুবি, 139 বাইট

লাম্বদা ফাংশন, যুক্তি হিসাবে x এবং y নেয় এবং একটি স্ট্রিং দেয়

->x,y{c=y-2*n=y-(x>y ?1:0)>>1
x+=-c/2*s=[x-n,c*3].max
x<n||x>n*2?'~<.,,>~~':',<..>, '*(x-n)+'<.,.> '*(2*n-x)+"<%s.> "*c%[?,*s-=c/2*3,?,*3]}

যদি কোনও সমাধান বিদ্যমান থাকে, তবে এটি সমস্ত কোয়ালাস + কমাপিলার বা সমস্ত কোয়ালাস + কাঁকড়া দিয়ে করা যেতে পারে।

নীতিটি হ'ল ন্যূনতম কমপ্লিটার ব্যবহার করা। যদি সংখ্যাটি বিজোড় হয় তবে আমরা 1 টি কমপিলার ব্যবহার করি। এমনকি যদি আমরা 0 টি কমপিপিলার ব্যবহার করি তবে যদি পিরিয়ডের চেয়ে বেশি কমা না হয় তবে আমরা 2 ব্যবহার করি।

ননকমপ্লিমারগুলিতে (ক্র্যাবস + কোআলস) ব্যবহৃত পিরিয়ডের সংখ্যাটি অগত্যা সমান এবং ননকোমপিলারগুলির সংখ্যা অর্ধেক (number of periods)-(number of commapillars)। যদি সমস্ত কোলার জন্য অপ্রতুল কমা, বা সমস্ত কাঁকড়ার পক্ষে অনেক বেশি থাকে তবে কোনও সমাধান সম্ভব নয়। অন্যথায়, আমরা একটি সমাধান ফিরে।

পরীক্ষার প্রোগ্রামে মন্তব্য করা হয়েছে

স্বচ্ছতার জন্য গিরগিটির পরিবর্তে "ব্যর্থ" ব্যবহার করে

f=->x,y{c=y-2*n=y-(x>y ?1:0)>>1
#n=noncommapillars=y>>1 as they have 2 periods. c=commapillars=y-2*n, 1 for odd y, 0 for even y.
#if x>y there are too many commas to have 0 commapillars for even y. noncommapillars= y-1 >> 1, so 2 commapillars

x+=-c/2*s=[x-n,c*3].max
# s=number of commas allocated to commapillars. x-n to allow all noncommapillars to be koalas, but at least 3 per commapillar.
#-c/2 == -1 if there are commapillars, 0 if not (Ruby truncates toward -inf). Subtract commas for commapillars from x if necessary

x<n||x>n*2?'fail':',<..>, '*(x-n)+'<.,.> '*(2*n-x)+"<%s.> "*c%[?,*s-=c/2*3,?,*3]}
#if x<n (insufficient commas for all koalas) or x>n*2 (too many for all crabs) return fail. Else...
#return string off crabs, koalas, and (using % operator like sprintf) c commapillars (0..2), the second with 3 commas (if present) and the first with the rest.  



10.times{|j|10.times{|i|puts "%-20s %s"%[?.*j+?,*i,f[i,j]]}}
#all x,y from 0..9

আউটপুট

,                    fail
,,                   fail
,,,                  fail
,,,,                 fail
,,,,,                fail
,,,,,,               fail
,,,,,,,              fail
,,,,,,,,             fail
,,,,,,,,,            fail
.                    fail
.,                   fail
.,,                  fail
.,,,                 <,,,.>
.,,,,                <,,,,.>
.,,,,,               <,,,,,.>
.,,,,,,              <,,,,,,.>
.,,,,,,,             <,,,,,,,.>
.,,,,,,,,            <,,,,,,,,.>
.,,,,,,,,,           <,,,,,,,,,.>
..                   fail
..,                  <.,.>
..,,                 ,<..>,
..,,,                fail
..,,,,               fail
..,,,,,              fail
..,,,,,,             <,,,.> <,,,.>
..,,,,,,,            <,,,,.> <,,,.>
..,,,,,,,,           <,,,,,.> <,,,.>
..,,,,,,,,,          <,,,,,,.> <,,,.>
...                  fail
...,                 fail
...,,                fail
...,,,               fail
...,,,,              <.,.> <,,,.>
...,,,,,             <.,.> <,,,,.>
...,,,,,,            <.,.> <,,,,,.>
...,,,,,,,           <.,.> <,,,,,,.>
...,,,,,,,,          <.,.> <,,,,,,,.>
...,,,,,,,,,         <.,.> <,,,,,,,,.>
....                 fail
....,                fail
....,,               <.,.> <.,.>
....,,,              ,<..>, <.,.>
....,,,,             ,<..>, ,<..>,
....,,,,,            fail
....,,,,,,           fail
....,,,,,,,          <.,.> <,,,.> <,,,.>
....,,,,,,,,         <.,.> <,,,,.> <,,,.>
....,,,,,,,,,        <.,.> <,,,,,.> <,,,.>
.....                fail
.....,               fail
.....,,              fail
.....,,,             fail
.....,,,,            fail
.....,,,,,           <.,.> <.,.> <,,,.>
.....,,,,,,          <.,.> <.,.> <,,,,.>
.....,,,,,,,         <.,.> <.,.> <,,,,,.>
.....,,,,,,,,        <.,.> <.,.> <,,,,,,.>
.....,,,,,,,,,       <.,.> <.,.> <,,,,,,,.>
......               fail
......,              fail
......,,             fail
......,,,            <.,.> <.,.> <.,.>
......,,,,           ,<..>, <.,.> <.,.>
......,,,,,          ,<..>, ,<..>, <.,.>
......,,,,,,         ,<..>, ,<..>, ,<..>,
......,,,,,,,        fail
......,,,,,,,,       <.,.> <.,.> <,,,.> <,,,.>
......,,,,,,,,,      <.,.> <.,.> <,,,,.> <,,,.>
.......              fail
.......,             fail
.......,,            fail
.......,,,           fail
.......,,,,          fail
.......,,,,,         fail
.......,,,,,,        <.,.> <.,.> <.,.> <,,,.>
.......,,,,,,,       <.,.> <.,.> <.,.> <,,,,.>
.......,,,,,,,,      <.,.> <.,.> <.,.> <,,,,,.>
.......,,,,,,,,,     <.,.> <.,.> <.,.> <,,,,,,.>
........             fail
........,            fail
........,,           fail
........,,,          fail
........,,,,         <.,.> <.,.> <.,.> <.,.>
........,,,,,        ,<..>, <.,.> <.,.> <.,.>
........,,,,,,       ,<..>, ,<..>, <.,.> <.,.>
........,,,,,,,      ,<..>, ,<..>, ,<..>, <.,.>
........,,,,,,,,     ,<..>, ,<..>, ,<..>, ,<..>,
........,,,,,,,,,    <.,.> <.,.> <.,.> <,,,.> <,,,.>
.........            fail
.........,           fail
.........,,          fail
.........,,,         fail
.........,,,,        fail
.........,,,,,       fail
.........,,,,,,      fail
.........,,,,,,,     <.,.> <.,.> <.,.> <.,.> <,,,.>
.........,,,,,,,,    <.,.> <.,.> <.,.> <.,.> <,,,,.>
.........,,,,,,,,,   <.,.> <.,.> <.,.> <.,.> <,,,,,.>

4

বেফুঞ্জ, 249 218 বাইট

&::00p&::00g\`-2/:20p2*-3*:30p\20g-`:!00g20g-*\30g*+:30g-v>:#,_@
"~<.,,>~~"0_v#\g03+`g050`\0:-g02\p05:-\*2g02:-*/6+3g03p04<^
$"<">:#,_40p>:!#|_3-0" >.,,"40g3>3g#<\#-:#1_
0" ,>..<,">:#,_$>:!#|_1-
#@_1-0" >.,.<">:#,_$>:!

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

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


2

সি # 6, 321 303 বাইট

using System.Linq;string F(int x,int y)=>S(x,y)??"~<.,,>~~";string S(int x,int y)=>x<0|y<0?null:y<1?x<1?"":null:y*3>x?S(x-1,y-2)!=null?S(x-1,y-2)+"<.,.> ":S(x-2,y-2)!=null?S(x-2,y-2)+",<..>, ":null:string.Concat(new int[y].Select((_,k)=>k<1?C(x-y*3+3):C(3)));string C(int x)=>$"<{new string(',',x)}.> ";

কল করুন F()। অন্য দুটি ফাংশন হলেন সহায়ক। repl.it ডেমো

// Coalesce failed combinations with commaleon
string F(int x,int y)=>S(x,y)??"~<.,,>~~";
// Get successful combination or null
string S(int x,int y)=>
    x<0|y<0
        // Fail: Out of range
        ?null
        :y<1
            ?x<1
                // Successful: All commas and periods accounted for
                ?""
                // Fail: Not enough periods for commas
                :null
            :y*3>x
                // Not all commapillars
                ?S(x-1,y-2)!=null
                    // Try koala
                    ?S(x-1,y-2)+"<.,.> "
                    // Try crab
                    :S(x-2,y-2)!=null
                        ?S(x-2,y-2)+",<..>, "
                        // Epic fail
                        :null
                // All commapillars
                :string.Concat(new int[y].Select((_,k)=>k<1
                    // This commapillar takes most of commas
                    ?C(x-y*3+3)
                    // The rest each takes 3
                    :C(3)));
// Generate single commapillar
string C(int x)=>$"<{new string(',',x)}.> ";
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.