পেঁয়াজ প্রোগ্রামিং


22

শুধুমাত্র ব্যবহার মুদ্রণযোগ্য হওয়া ASCII , (হেক্স কোড 7E করার 20) একটি বর্গক্ষেত্র এন × এন লিখতে কোর প্রোগ্রাম মন্তব্য ব্যতিরেকে 4 আরো দ্বারা বেষ্টিত স্তর , তৈরি করার সময় একটি (n + 8) × (n + 8) বর্গ প্রোগ্রাম (এন> 0) । এন = 3 এর জন্য লেআউটটি (আসল কোড দ্বারা প্রতিস্থাপন করা) এর মত দেখাচ্ছে:

44444444444
43333333334
43222222234
43211111234
4321CCC1234
4321CCC1234
4321CCC1234
43211111234
43222222234
43333333334
44444444444
  • সি এর মূল 3 × 3 প্রোগ্রাম উপস্থাপন করে।
  • 1 টি প্রথম স্তরটি উপস্থাপন করে, 2 টি দ্বিতীয় স্তরকে উপস্থাপন করে ইত্যাদি

প্রোগ্রামটি সর্বদা স্থান পৃথক পূর্ণসংখ্যার স্ট্রিং নেয় যেমন 0 -1 31 -1 2 2 2স্ট্ডিন বা অনুরূপ (এটি কেবল প্লেইন সংখ্যা, কোনও উদ্ধৃতি বা বন্ধনী বা কোনও কিছুই হওয়া উচিত নয়)। আউটপুট নির্ভর করে লেআউটটির কোন অংশগুলি চালানো হয়েছিল তার উপর।

প্রোগ্রামটি চালানোর জন্য পাঁচটি উপায় রয়েছে (নতুন লাইনে রানটিতে অন্তর্ভুক্ত করা হয়)। প্রত্যেকে তালিকার ভিন্ন কিছু করে:

  1. শুধু কোর চালান:

    CCC
    CCC
    CCC
    

    এটি ইনপুট তালিকার উপাদানগুলির নিখুঁত মানগুলির সর্বাধিক গণনা করে এবং COREবহুবার নতুন লাইনে প্রিন্ট করে। সর্বোচ্চ 0 হলে কিছুই আউটপুট হয় না (একটি নতুন লাইন ঠিক আছে)।

    • আউটপুট 0 -1 31 -1 2 2 2হবে

      CORE
      CORE
      ...
      

      31 বার।

  2. স্তর 1 সহ কোরটি চালান:

    11111
    1CCC1
    1CCC1
    1CCC1
    11111
    

    এটি তালিকার মানগুলির গড় ( গণিতের গড় ) স্ট্যান্ডার্ড ভাসমান পয়েন্ট যথার্থতার সাথে আউটপুট দেয় ।

    • এর আউটপুট 35/7 0 -1 31 -1 2 2 2= 5( 5.0ভাল))
  3. 1 এবং 2 স্তর সহ কোরটি চালান:

    2222222
    2111112
    21CCC12
    21CCC12
    21CCC12
    2111112
    2222222
    

    এটি বিপরীত ইনপুট তালিকার একটি স্থান পৃথকীকরণ তালিকা আউটপুট দেয়।

    • আউটপুট 0 -1 31 -1 2 2 2হবে 2 2 2 -1 31 -1 0
  4. 1, 2 এবং 3 স্তরগুলি দিয়ে কোরটি চালান (প্যাটার্নটি স্পষ্ট হওয়া উচিত)।
    এটি বাছাই করা ইনপুট তালিকার একটি স্থান পৃথকীকরণ তালিকা আউটপুট দেয়।

    • আউটপুট 0 -1 31 -1 2 2 2হবে -1 -1 0 2 2 2 31
  5. 1, 2, 3, এবং 4 স্তর সহ কোরটি চালান
    d এটি ডুপ্লিকেটগুলি সরিয়ে ইনপুট তালিকার একটি স্থান পৃথকীকরণের তালিকা আউটপুট দেয়, ক্রমটি অর্ডার করে কোনও ব্যাপার নয়।

    • জন্য আউটপুট 0 -1 31 -1 2 2 2হতে পারে -1 0 2 31

সমস্ত আউটপুট stdout বা একটি অনুরূপ বিকল্প হয়।

কেবলমাত্র এই 5 লেআউট সংমিশ্রণগুলিতে নির্দিষ্ট আচরণ রয়েছে।

নোট

  • মূল বা স্তর বা এর সমন্বয়গুলিতে মন্তব্যের অনুমতি নেই allowed কোড যা কোনও অফ-অফ বা গঠনমূলক কিছুই করে না তা কোনও মন্তব্য হিসাবে গণ্য হয় না।
  • মনে রাখবেন যে কোরটিতে কোনও (ধনাত্মক) N × N মাত্রা থাকতে পারে তবে স্তরগুলি কেবল একটি অক্ষর ঘন।
  • আপনি ধরে নিতে পারেন ইনপুটটির কোনও নেতৃস্থানীয় বা পিছনের স্থান নেই এবং সংখ্যার মধ্যে ঠিক একটি স্থান রয়েছে। এতে সর্বদা কমপক্ষে একটি সংখ্যা থাকবে। (আউটপুট তালিকাগুলিও এর মতো ফর্ম্যাট করা উচিত))
  • আপনি তালিকা এবং আউটপুট জন্য প্রয়োজনীয় গণনার মান থাকবে না অনুমান হতে পারে যে ওভারফ্লো (অথবা underflow) আপনার পূর্ণসংখ্যার (যতদিন তাদের সর্বোচ্চ 2 ভালো কিছু যুক্তিসঙ্গত 16 )।

স্কোরিং

সাধারণত এই প্রোগ্রামটি লেখা সহজ হবে। একটি ছোট কোর দিয়ে এটি লেখা শক্ত।

সবচেয়ে ছোট কোর আকারের সাথে প্রোগ্রামটি (সবচেয়ে ছোট এন) জিতেছে। সম্পর্কের ক্ষেত্রে বিজয়ী হ'ল স্বল্পতম স্বতন্ত্র অক্ষরের সাথে সম্পূর্ণ প্রোগ্রাম (((এন + 8) × (এন + 8) বর্গক্ষেত্র (নতুন লাইনের গণনা নয়) is

আপনার উত্তরের শীর্ষে আপনার এন মানটি প্রতিবেদন করুন।


1
আমি ভেবেছিলাম যে এই নতুন
অপ্টিমাইজার

আমি কি এমন ভাষা ব্যবহার করতে পারি যা একটি নতুন লাইনের পরে সবকিছু উপেক্ষা করে?
isaacg

1
@ আইস্যাকগ হ্যাঁ (যতক্ষণ না নিউলাইন মন্তব্য চরিত্র হিসাবে বিবেচিত হবে না, যা অদ্ভুত হবে)।
ক্যালভিনের শখ

3
@ অপ্টিমাইজার আমাকে প্রলোভিত করবেন না ... " প্রতিটি উত্তর কোড পেঁয়াজে একটি নতুন স্তর যুক্ত করে যাতে এটি তালিকা সহ কিছু নতুন করে ... "
ক্যালভিনের শখ

1
@ অপ্টিমাইজার নং (আমি জানি এই আই / ও বিধিগুলি কৃপণ কঠোর তবে এটি ভাষাগুলিতে জিনিসগুলিকে সামঞ্জস্য রাখতে হবে))
ক্যালভিনের শখ

উত্তর:


10

সিজেম, এন = 5, 27 (26) অনন্য অক্ষর

আমি শূন্যস্থানগুলি গণনা না করা হলে এটি 26 টি অক্ষর। প্রোগ্রামটি এমন কোনও জায়গায় রূপান্তরিত করা যেতে পারে যা শূন্যস্থান ব্যবহার করে না, কেবলমাত্র কোনও অপ্সের সাহায্যে সমস্ত শূন্যস্থান পূরণ করে (উদাহরণস্বরূপ _;যা শীর্ষ স্ট্যাকের উপাদানটিকে নকল করে এবং তারপর ছাড়িয়ে দেয়, বা অ্যারেটিকে বার বার বাছাই করে) তবে এটি আসল কোড থেকে কেবল বিভ্রান্ত হবে।

l~]_|S*      
{l~]$S*      
 {l~]W%S*    
  {l~]_,\    
   {l~]{z    
    }%$W=    
    "CORE    
    "*       
         }   
   ;:+d\/ }  
  ;        } 
 ;          }
;            

এটি এখানে পরীক্ষা করুন।

মূলটি হ'ল

l~]{z
}%$W=
"CORE
"*

(প্লাস একটি খালি লাইন।)

আমি মোটামুটি নিশ্চিত যে N = 4সিজেমে করা যাবে না (এবং আমি নিশ্চিত যে ডেনিস আমাকে অন্যথায় বোঝাবেন: ডি)। উপরেরটিতে 17 টি অক্ষর রয়েছে এবং এটি সম্ভবত 16 টিতে নামানো সম্ভব হতে পারে (যেমন সিজামের কাছে শ্বাসরোধ করার জন্য কোনও বাগ নেই :z, যার প্রয়োজন হয় {z}%বা এআরজিভি ব্যবহার করে) তবে আমি মনে করি না আপনি এটি ফিট করতে পারেন এর মধ্যে একটি লাইন বিরতি প্রবর্তন না করে বিন্যাসে CORE

সমস্ত বাস্তবায়ন প্রদত্ত কার্যগুলির জন্য খুব সরল সমাধান। l~]এগুলির সমস্ত শুরু করে যা দিয়ে STDIN পড়ে এটি মূল্যায়ন করে এবং এটিকে একটি অ্যারে রাখে।

পূর্ববর্তী স্তরটি সর্বদা চারদিকে থাকে {...}, যা এটিকে এমন একটি ব্লক করে তোলে যা স্বয়ংক্রিয়ভাবে কার্যকর হয় না। এবং এটি কার্যকর করার পরিবর্তে, আমি এটি দিয়ে স্ট্যাক থেকে কেবল তা ফেলে দিই ;, তাই কোনও স্তর পূর্ববর্তী স্তরের কোডের উপর নির্ভর করে না। স্তর 1 এ, কোডটি প্রথম লাইনে ফিট হয় নি, তাই আমি কোর ব্লকটি বাতিল করার পরে এটিকে চালিয়েছি।

এখন আসল প্রোগ্রামগুলির জন্য:

  • মূল:

    {z}%$W="CORE
    "*
    

    absতালিকার উপরে মানচিত্র রাখুন, এটি বাছাই করুন, শেষ উপাদানটি নিন, পুনরাবৃত্তি করুন CORE(এবং একটি লাইন ব্রেক) যা বহুবার।

  • স্তর 1:

    _,\:+d\/
    

    তালিকাটি সদৃশ করুন, দৈর্ঘ্যটি নিন, স্ট্যাক উপাদানগুলিকে অদলবদল করুন, যোগফলটি পাবেন double, স্ট্যাক উপাদানগুলিকে অদলবদল করুন, ভাগ করুন। আমি মনে করি এটি আরও খাটো হতে পারে তবে এটি করার কোনও উত্সাহ নেই।

  • স্তর 2:

    W%S*
    

    অ্যারেটি বিপরীত করুন, স্পেস দিয়ে রিফল করুন।

  • স্তর 3:

    $S*
    

    অ্যারে বাছাই করুন, স্পেস দিয়ে রিফল করুন।

  • স্তর 4:

    সদৃশ, সেট ইউনিয়ন গ্রহণ, ফাঁকা স্থান সঙ্গে riffle।

কিছু অন্যান্য অপ্টিমাইজেশনও সম্ভব, যেমন স্তর 2 ;এবং *Sএর পুনরায় ব্যবহার করা , তবে আবার এটি স্কোরকে প্রভাবিত করে না।


17

পাইথন 2 - এন = 17, 53 টি অক্ষর

ওহ আমি পাইথনের সাথে উত্স-বিন্যাস চ্যালেঞ্জগুলি পছন্দ করি ...

i=4                     ;
ii=3                    ;
iii=2                   ;
iiii=1                  ;
iiiii=0;R=raw_input     ;
iiiii;w=R().split()     ;
iiiii;n=map(int,w)      ;
iiiii;S=set(n);M=max    ;
iiiii;s=sorted(n)       ;
iiiii;J="\n".join       ;
iiiii;j=" ".join        ;
iiiii;k=M(map(abs,n))   ;
iiiii;A=J(["CORE"]*k)   ;
iiiii;B=sum(n)/len(n)   ;
iiiii;C=j(w[::-1])      ;
iiiii;D=j(map(str,s))   ;
iiiii;E=j(map(str,S))   ;
iiiii;P=A,B,C,D,E       ;
iiiii;print P[i]        ;
iiiii;" /__----__\  "   ;
iiiii;"|/ (')(') \| "   ;
iiii;"  \   __   /  "   ;
iii;"   ,'--__--'.   "  ;
ii;"   /    :|    \   " ;
i;"   (_)   :|   (_)   ";

যদিও এখনও কিছু অব্যবহৃত সাদা জায়গা আছে।

আমি এখনও অনন্য চরিত্রের গণনা উন্নত করতে পারি, তবে আমি আরও ভাল পঠনযোগ্যতার সাথে আঁকড়ে থাকব - যদি কিছু আছে তবে।

সম্পাদনা: ওহ, এটি আবার স্ট্যান !


আপনি সম্ভবত i=*কৌতুকের পরিবর্তে
প্রিন্টকে

@ এম হার্জক্যাম্প: printপাইথন ২ দিয়ে আলিয়াসিং করা সম্ভব নয় But তবে নিশ্চিত, সম্ভবত উন্নতির জন্য আরও কিছু জায়গা রয়েছে - সম্ভবত পাইথন ৩ ব্যবহার করে
ফ্যালকো

আমি পাইথন জানি না, তবে মূল কোড আউটপুটে এটি অনুপস্থিত নিখুঁত মান নয় -c*max(n)
নটকি

@ নটকি: ঠিক বলেছেন! আমি মনোযোগ দিয়ে পড়িনি। তবে আমি এটি ঠিক করতে সক্ষম হয়েছি।
Falko

6

পাইথন 3: এন = 11, 40 স্বতন্ত্র অক্ষর

if 1:              
 if 1:             
  if 1:            
   if 1:           
    p=print;R=0    
    a=input()      
    b=a.split()    
    m=map;a=abs    
    E=max;l=len    
    n=m(int,b);    
    C=['CORE']     
   "R=E(m(a,n))"   
   OO=C*R;s=sum    
   "x='\n'.join"   
   "p(x(O))    "   
  "p(s(n)/l(b)) "  
 "p(*b[::-1])    " 
"p(*sorted(n))    "
p(*set(n))         

আমার যাদুঘর হওয়ার জন্য @ ফালকোকে ধন্যবাদ। এটি কাজ করে, কারণ পাইথন প্রতিটি স্টেটমেন্টের জন্য একটি নতুন সুযোগ তৈরি করে না, সুতরাং ভেরিয়েবলগুলি বহিরাগত printস্টেটমেন্টগুলিতে স্থির থাকে । একটি বিরক্তিকর বিষয় হ'ল কোনও mapবস্তু (আমাদের ক্ষেত্রে n) কেবল একবার ব্যবহার করা যেতে পারে। সুতরাং R=E(...)লাইনটি স্ট্রিং করা প্রয়োজন ছিল, তবে তার পরে Rসংজ্ঞা দেওয়া হয়নি। সুতরাং আমি ভাগ্যবান যে প্রথম লাইনে চারটি ফাঁকা জায়গা ছিল!

*b[::-1]তালিকার পরিবর্তে একাধিক উপাদান সরবরাহ করে আউটপুট সমাধান করা যেতে পারে । বিকল্পটি ' '.join(...)অনেক দীর্ঘ হত।


সুন্দর! পাইথনে ভেরিয়েবল লাইনের সূচনা করতে বিকল্প বিকল্পটি দেখে ভাল লাগছে। কিছু সংক্ষিপ্ত if- বিবৃতি এবং সমস্ত স্পেস ঠিক আছে। :)
ফালকো

@ ফালকো: অবক্ষয়টি হ'ল স্ট্যানের জন্য কোনও স্থান নেই :(
এম হারজক্যাম্প

2

সি (জিসিসি) , এন = 15, 47 অনন্য অক্ষর

অনুমান sizeof(int) == 4এবং sizeof(int*) >= sizeof(int)

;                     ;
 ;                   ; 
  ;                 ;  
   ;           float   
    s;c(a,b)int*a,*    
    b;{b=*b-*a;}i,n    
    ,*f;*q,*R,C,E ;    
    main(a){for(;0<    
    scanf("%i",&a);    
    i=i<abs(a)?a:i,    
    s+=f[n-!0]=a)f=    
    realloc(f,++n*4    
    );qsort(f,n*C,4    
    ,c);for(i=q?R?n    
    :!0:i;i--;a=f[i    
    ])!E|n-i<2|a!=f    
    [i]&&printf(q?R    
    ?R:q:"CORE\n",!    
    q+R?f[i]:s/n);}    
   ;*q="%f";       ;   
  ;*R="%.0f ";      ;  
 ;C=!0;              ; 
;E=!0;                ;

4 স্তর

3 স্তর

2 স্তর

1 স্তর

মূল


0

রুনিক জাদু , এন = 9 এন = 8, 38 টি অক্ষর

/ o/\  \     \S\
" //RiU\      \}
@            q "
"        }+1\r @
}   ^U \    {q "
     \{\?)}\+  }
  o\/'|A:{:/R' S
 //r/Ril2=?\?R :
   ,A~/"OC"/=? {
   @| \"RE"\3= =
 D$\' /rqka/l2S?
    i \*@   il\/
   'R1i     Ui ~
 R$/Rak      U \
 ?!D  Rlril1-{=
R   R: }S:{=?\~

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

দেখা গেছে আমি ভুল ছিলাম , আমি ভুলে গিয়েছিলাম যে আমার "স্পষ্ট oতালিকার একটি তালিকা" সমস্যার আগে সমস্যার মুখোমুখি হওয়ার কারণে ইতিমধ্যে আমার একটি স্পষ্টতই rt কমান্ড ছিল । এটি সারণি কমান্ডের অভ্যন্তরীণ ব্যয়ের কারণে চূড়ান্ত প্রোগ্রামটি নিতে পারে এমন ইনপুটগুলির আকারকে সীমাবদ্ধ করে (8 মান)। সামান্য সাম্প্রতিক কান্ড ইনপুট আকারটি 13 টি অনন্য অক্ষরের জন্য ব্যয় করে 19 বা দুটি অনন্য অক্ষরের জন্য 19- এ বাড়িয়ে দিতে পারে (সমস্ত অতিরিক্ত অক্ষর স্তর 1 এ থাকে এবং একই সাথে যুক্ত হয়, তবে আইপি-র স্ট্যাকের বর্ধিত ক্ষমতাটি হয় না লেয়ার 3 অবধি প্রয়োজনীয়, সি, এল 1 এবং এল 2 মেমরির সম্পূর্ণ ইনপুট না রেখে তাদের গণনা সম্পাদন করতে পারে)।

কোর: অনলাইন চেষ্টা করে দেখুন!

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

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

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

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

আরও সংকোচনের সম্ভাবনা খুব কম, কারণ ছোট স্থানের কারণে প্রবাহ নিয়ন্ত্রণের অক্ষরের সংখ্যা বৃদ্ধির প্রয়োজন হয়। আমি একটি ব্যবস্থা পেয়েছি যা মূল প্রোগ্রামে 9 টি ফাঁকা স্থান দিয়েছে, তবে এটি পর্যাপ্ত নয়, আমাদের প্রয়োজন (সঠিকভাবে সাজানো) 15।

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

স্তরগুলি 1 এবং 2 নীচে বাধা দেয় (যাতে উপরের লাইনটি ভবিষ্যতের স্তরগুলির জন্য খালি থাকে) এবং তারপরে ডান হাতের প্রান্তে (লুপটি উল্লম্বভাবে সাজানো) বরাবর তাদের ক্রিয়াকলাপ সম্পাদন করে। স্তর 1 সামান্য লম্বা এবং উপরের প্রান্তে 3 টি অক্ষরও গ্রহণ করে \তবে উপরের ডানদিকে তির্যক প্রতিফলক ( ) পরবর্তী লুপের পুনরাবৃত্তির সাথে আইপিটিকে স্বাক্ষর করে।

নীচের প্রান্তে পুনর্নির্দেশের আগে প্রথম ইনপুট মানটি ধরার জন্য উপরের প্রান্তটি সহ 3 স্তরটি বাধা দেয় (স্তর 4 তার নীচের লাইনে এই কলামটিতে একটি এনওপি ছেড়ে যায়) এবং নীচের দিকে প্রান্তরেখাটি নীচের প্রান্তের লুপটি ব্যবহার করে পুরো ইনপুটটি পড়ে কমান্ড ( D) নীচে বাম দিকে। $মানগুলি স্থান-পৃথক করতে আইপি নীচে বামদিকে একটি আউটপুট ( ) লুপটি শেষ হওয়ার আগে কয়েকবার বাউন্স করে ।

স্তর 4 স্তর 3 এর সমস্ত কার্যকারিতা ব্যবহার করে (তাই ফাঁকা স্থান), তবে স্তর 3 এর প্রসেসিংয়ের শেষে নিজস্ব কার্যকারিতা সম্পাদনের জন্য তার নিজের উপরের প্রান্তে (উপরের বামে) বাধা দেয়। উপরের বাম কোণে একটি স্ট্রিং সন্নিবেশ "@"করানো হয়েছে যা নীচে বরাবর প্রসেসিং লুপে প্রবেশের আগে অ্যারের শেষ বোঝাতে ব্যবহৃত হয়। যদি একটি সদৃশ মান পাওয়া যায়, এটি পপড ( ~, নীচের ডান কোণে) অন্যথায় শাখাটি নেওয়া হয়েছে যা নতুন ডান হাতের প্রান্তটি গ্রাস করে। এই পাশের শাখাটি অ্যারের শেষটি পৌঁছেছে কিনা তা পরীক্ষা করে দেখেছে এবং যদি থাকে তবে স্তর 3 থেকে একই স্থান পৃথক আউটপুট লুপের দিকে রওনা করুন অন্যথায় মূলটিতে ফিরে আসার জন্য স্তর 3 এ ফাঁকা স্থানটি ব্যবহার করুন Otherwise লুপ.

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