আমাকে একটি এএসসিআইআই-সোকে বুনুন


15

ভূমিকা

দীর্ঘ গল্প সংক্ষিপ্ত: কিছু দিন আগে আমি দুর্ঘটনাক্রমে একটি মোজা বুনন শুরু করি এবং সমতল সেলাইগুলির সুদৃ ?় যৌক্তিক কাঠামো আমাকে এই ধারণার দিকে নিয়ে যায়: আমরা কেবল একটি মোড়কে কেন ASCII- বুনি না?

ইনপুট

ইনপুট সীমার মধ্যে এন পূর্ণসংখ্যা একটি এমনকি [2,30]

আউটপুট

স্পষ্টতই আউটপুট একটি মোটা হয়।

গঠন

কারণ আমরা কেবল সরল সেলাই ব্যবহার করব যা আপনি কেবল vনীচের দিকে সেলাই এবং >ডানদিকে একটি সেলাইয়ের জন্য ব্যবহার করবেন । আমি একটি উদাহরণ সহ পুরো কাঠামোটি ব্যাখ্যা করি N=8:

vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvv>>>
vvvvvv>>>>>>
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvv>>>>>>>>>>>>>>>>>>>>>>>>
  • প্রথম ব্লকটি ওপরের অংশ। এর প্রস্থ Nএবং উচ্চতা রয়েছেN*1.5
  • এরপরে হিল শুরু হয়। আপনার প্রস্থ vনা হওয়া পর্যন্ত আপনি ডান দিক থেকে প্রতি সারিতে একটি বিয়োগ N/2করুন। তারপরে নীচের দিকে নিটগুলি শেষ করতে আপনি নীচে N/2প্রস্থের সাথে সারি যুক্ত করুন N/2। নোট করুন এটি N/2 + 1প্রস্থ সহ মোট সারি দেয়N/2

প্রথম অংশ:

vvvvvvvv    //begin with width N
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv
vvvvvvvv    // N*1.5 times
vvvvvvv     // reduce
vvvvvv
vvvvv
vvvv        // till here
vvvv        // repeat N/2 times
vvvv
vvvv
vvvv
  • এখন পাশের ওয়ার্ডগুলি বুনন শুরু হয়। আপনি প্রথম হ্রাস করা সারি দিয়ে শুরু করুন, >প্রস্থ না হওয়া পর্যন্ত পূরণ Nকরুন এবং আরও দুটি যুক্ত করুন। N/2প্রস্থ সহ প্রথম সারি সহ সেই প্রক্রিয়াটি চালিয়ে যান
  • যে স্তর তলদেশে সারি পূরণ করুন এবং যোগ N*1.5বার >যে
  • বাইরের অংশগুলি যেমন হয় তেমন হতে দিন এবং >'sশেষ না হওয়া পর্যন্ত প্রথমটির নীচে এবং লেসের উপরে আরও দুটি সারি যুক্ত করুন

দ্বিতীয় অংশ:

vvvvvvvv
vvvvvvv>>>  //fill to N and add two >
vvvvvv>>>>>>     //repeat
vvvvv>>>>>>>>>
vvvv>>>>>>>>>>>>   //till here
vvvv>>>>>>>>>>>>>>>>>>>>>>>>       //fill to the row above and add N*1.5 times >
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>     //add two more '>' than the row above
vvvv>>>>>>>>>>>>>>>>>>>>>>>>>>     //add two more '>' than the row beneath
vvvv>>>>>>>>>>>>>>>>>>>>>>>>

বিধি

নতুন লাইনগুলি অনুসরণ করা ঠিক আছে।

আপনি বড় হাতের বা ছোট হাতের মধ্যে বেছে নিতে পারেন Vতবে এটি ধারাবাহিক হতে হবে।

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

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

N=2
vv
vv
vv
v>>>
v>>>>>>

N=4
vvvv
vvvv
vvvv
vvvv
vvvv
vvvv
vvv>>>
vv>>>>>>
vv>>>>>>>>>>>>
vv>>>>>>>>>>>>

N=6
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvvv
vvvvv>>>
vvvv>>>>>>
vvv>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>>>
vvv>>>>>>>>>>>>>>>>>>

N=12
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvvv
vvvvvvvvvvv>>>
vvvvvvvvvv>>>>>>
vvvvvvvvv>>>>>>>>>
vvvvvvvv>>>>>>>>>>>>
vvvvvvv>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
vvvvvv>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

2
আমি আশা করি একটি পেছনের নিউলাইন ঠিক আছে? (এছাড়াও, কীভাবে একজন দুর্ঘটনাক্রমে একটি মোজা বোনা শুরু করে?)
গ্রেগ মার্টিন

3
@ গ্রেগমার্টিন আমার দাদীর সাথে দেখা করেছেন এবং তিনি আমাকে জিজ্ঞাসা করেছেন। তাকে না বলা মুশকিল তাই আমরা এখানে যাচ্ছি :) দু'দিন আগে প্রথমটি শেষ হয়েছে। আমি মনে করি এটি বেশ ঠিক আছে তবে আমি সত্যই কাজের পরিমাণকে হ্রাস করেছি। তাই কেউ আপনার জন্য মোজা তৈরি করলে খুশি হন।
ইজলিন

আমি কি ব্যবহার করতে পারি vবা Vবিনিময়যোগ্য? আমি এই মুহুর্তের জন্য অনুমান করতে যাচ্ছি vযা কেবলমাত্র একমাত্র অনুমোদিত, তবে অনুমতি Vদিলে বাইট গণনাটি কার্যকর হবে
গোল্ডেন

@ গোল্ডেনাটিও আমি নিয়ম পরিবর্তন করেছি, এখন উভয়েরই অনুমতি রয়েছে।
ইজলিন

@ গুরুপদমমাদাপুর যেমন আপনি 'ইনপুট' পড়তে পারেন, কেবলমাত্র সংখ্যাকেও ইনপুট হিসাবে অনুমোদিত। আপনার প্রোগ্রামে বিজোড় সংখ্যাগুলি হ্যান্ডেল করার দরকার নেই
ইজলিন

উত্তর:


2

পাইথ - 93 বাইট

J/Q2K"V"P*s*Q1.5+*QKbVJp*+Q_+1NK*+3*3N">";InQ2VJp*JK*+s*2aaNc-J 1 2c-J 1 2+3*Q3">";IqQ2pK*6">

ব্যাখ্যা:

J/Q2                             sets J to half of input
K"V"                             sets K to "V"
P                                prevents newline after main block of sock
*                                multiply the next 2 items
s*Q1.5                           rounds up input*1.5 (columns in main block)
+                                adds the next 2 item (this item gets multiplied by the previous item)
*QK                              multiplies "V" by input (resulting in each row)
b                                New line
VJ                               For all the numbers 0-((Q/2)-1) (as represented by N)
p                                print
*                                multiply the next 2 items
+Q_+1N                           input + -1*(1+N)
K                                "V"
*+3*3N">"                        3N+3 many ">"'s
;                                ends for statement
InQ2                             if input is not 2
VJ                               For all the numbers 0-((input/2)-1) (as represented by N)
p                                print
*JK                              input/2 many ">"'s
*+s*2aaNc-J 1 2c-J 1 2+3*Q3">"   int(abs(abs(N-((input/2)-1)/2)-((input/2)-1)/2)))+(input*3)+3 many ">"'s
;                                end of for statement
IqQ2                             if input is 2
pK*6">                           print "V" and 6 ">"'s

আপনি এটি এখানে চেষ্টা করতে পারেন!


2

গণিত, 104 বাইট

""<>{t=Table;c=t[{"v"~t~#,">"~t~#2,"
"},#3]&;h=#/2;c[#,0,3h],c[#-i,3i,z={i,h}],c[h,6h+2Min[i-1,h-i],z]}&

নামহীন ফাংশন ইনপুট হিসাবে ইতিবাচক এমনকি পূর্ণসংখ্যার গ্রহণ এবং একটি স্ট্রিং ফিরে (একটি পেছনের নিউলাইন সহ)। নোট করুন যে উপরের দুটি লাইনের কোডের মধ্যে থাকা নিউলাইনটি কোডের অংশ। মূল কাজটি ফাংশনটির দ্বারা সম্পন্ন হয় c, যার অদম্য সংজ্ঞা

c[#1, #2, #3] = Table[{Table["v", #1], Table[">", #2], "\n"}, #3]

তালিকাগুলির একটি টেবিল তৈরি করে, প্রতিটি একের পর এক বেশ কয়েকটি "v"গুলি এবং ">"এর পরে বেশ কয়েকটি এস একটি নিউলাইন থাকে। ভাগ্যক্রমে, #3বাইরের জন্য পরিসীমাটির Tableএকটি পরিবর্তনশীল নাম থাকতে পারে, যা অভিব্যক্তিগুলিতে উল্লেখ করা যেতে পারে #1এবং #2; এটি cস্থির এবং পরিবর্তনশীল উভয় যুক্তি দিয়ে ফাংশনটি কল করার অনুমতি দেয় । বাকিটি কেবল গণনা, এবং স্ট্রিং-যোগদানকারী অপারেটর ""<>নিখরচায় নেস্টেড তালিকাগুলি সমতল করে।


2

পাইথন, 3.5 183 177 বাইট

n=int(input())
h=n//2
z=h%2
l=['v'*h+'>'*(2*n-h+3*h+i*2)for i in range(1*z+n//4)]
*map(print,['v'*n]*(3*h)+['v'*i+'>'*(3*(n-i))for i in range(h,n)][::-1]+[l,l[:-1]][z]+l[::-1]),

ব্যাখ্যা ইনকামিং।

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


ঠিক তাই আপনি জানেন যে, টিআইও নেক্সাস এই মুহুর্তে টিআইও ভি 2-র চেয়ে আরও ভাল কাজ করে কারণ ভি 2 "প্রাথমিক আলফা পর্যায়ে রয়েছে"

একটি বাইট সংরক্ষণ করতে, আপনি 'ভ' শীর্ষে একটি ভেরিয়েবল বরাদ্দ করতে পারেন।
nedla2004

@ জ্যাকবেটস ডিউলি উল্লেখ করেছেন।
গুরুপদ মামাদপুর

@ nedla2004 আপনি এভাবে বলতে চাচ্ছি না: n,v=int(input()),'v'? তারপরে এটি কিছুই বাঁচায় না।
গুরুপদ মামাদপুর

1

গ্রোভী, 168 বাইট

{n->h=n/2;z=(int)h%2;l=(0..<1*z+n/4).collect{'v'*h+'>'*(2*n-h+3*h+it*2)};(['v'*n]*(3*h)+(n-1..h).collect{'v'*it+'>'*(3*(n-it))}+(z==0?l:l[0..<-1])+l[-1..0]).join('\n')}

এটি একটি নামবিহীন বন্ধ। পদ্ধতির সম্পূর্ণরূপে আমার পাইথন 3.5 উত্তর।

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


1

ব্যাচ, 279 বাইট

@echo off
set i=for /l %%i in (2,2,%1)do 
set v=
%i%call set v=v%%v%%v
%i%echo %v%&echo %v%&echo %v%
%i%call:a
%i%call set v=%%v%%]]]
%i:,2,=,4,%call:c&if %%i lss %1 call set v=%%v%%]]
%i:2,=4,%call:b
exit/b
:a
set v=%v:~1%]]]]]
:b
set v=%v:~0,-2%
:c
echo %v:]=^>%

দ্রষ্টব্য: দ্বিতীয় লাইনটি একটি স্পেসে শেষ হয়। ব্যাচের >ভেরিয়েবলগুলিতে প্রতিধ্বনিত হওয়ার সমস্যা রয়েছে তাই আমার ক) একটি বিকল্প ব্যবহার করতে হবে) সংশোধিত স্ট্রিং প্রতিধ্বনি করতে একটি সাব্রোটিন কল করুন। আসলে আমার তিনটি সাব্রুটাইন রয়েছে:

  • aহিল জন্য ব্যবহৃত হয়। এক vপ্রতিটি সময় মুছে ফেলা হবে এবং তিন >গুলি যোগ করা হয়। দুটি অতিরিক্ত >এস যুক্ত করা হয়েছে যাতে সাব্রোটিন সাব্রোটিনের মধ্যে পড়তে পারে b
  • bপায়ের নীচের অংশে ব্যবহৃত হয়। দু'বার >প্রতিবার সরানো হয়। সাব্রোটিনটি তখন cসাব্রোটিনের মধ্যে পড়ে ।
  • cস্থানধারক চরিত্রটি প্রতিস্থাপন করে সকের বর্তমান সারিটি >ছাপায় যাতে সঠিকভাবে প্রিন্ট করা যায়।

চতুর্থ লাইন পায়ের প্রস্থ পরিচালনা করে যখন পঞ্চম লাইন তার দৈর্ঘ্য পরিচালনা করে। সপ্তম রেখাটি পাদদেশের দৈর্ঘ্য পরিচালনা করে যখন অষ্টম লাইনটি >>মুদ্রণের পরে প্রতিটি লাইনে দুটি যোগ করে পাদদেশের উচ্চতার উপরের অর্ধেকটি পরিচালনা করে । এটি সোক মাপের জন্য কাজ করে যা 4 টির বহুগুণ হয় এবং অন্যান্য মোজা আকারের জন্য একটি সমন্বয় করা হয় যাতে দীর্ঘতম লাইনটি পুনরাবৃত্তি না হয়।


0

পিএইচপি, 229 বাইট

একটি বেশ অলস পদ্ধতির

for($m=$n=$p=$argv[1];$i++<$q=$n*1.5;)echo($d=str_pad)("
",$n+1,v);for(;$p-->$n/2;)echo$s="
".$d($d("",$p,v),$m+=2,">");$r=[$s.=$d("",$q,">")];for($k=$n>>2;--$k;)$r[]=$s.=">>";echo join($r),$n&2?"$s>>":"",join(array_reverse($r));

একটি শীর্ষস্থানীয় নিউলাইন প্রিন্ট করে। সাথে চালাও -nr

ভাঙ্গন

// print first part + preparing some variables for later
for($m=$n=$p=$argv[1];$i++<$q=$n*1.5;)echo str_pad("\n",$n+1,v);

// print second part + prepare $s for third part
for(;$p-->$n/2;)echo$s="\n".str_pad(str_pad("",$p,v),$m+=2,">");

// third part: create an array of strings ...
$r=[$s.=str_pad("",$q,">")];
for($k=$n>>2;--$k;)$r[]=$s.=">>";
// ... then print it and its reverse
echo join($r),$n&2?"$s>>":"",join(array_reverse($r));

0

ডিসি , 269 বাইট

1k?d1.5*sadsdsb[[[v]nlb1-dsb0<f]dsfx[]pldsbla1-dsa0<c]dscxldd1-sisb2su[[[v]nlb1-dsbldli-<g]dsgx[[>]nlb1-dsblu+0<t]dstx[]plu2+suli1-dsilddsb2/!>m]dsmxld3*dsdsolidswst[[[v]nlw1-dsw0!>x]dsxx[2-]sa[2+]sy[[>]nlo1-dso0<g]dsgxldltli1+2/<yltli1+2/>adsdsolisw[]plt1-dst0!>f]dsfx

ঠিক আছে, ভাল ... এটি বিশাল । এটি সহজ ছিল না, আমি আপনাকে এতটা বলব, সমস্ত রেজিস্ট্রার রেফারেন্স, তুলনা, ম্যাক্রোগুলি, স্ট্রিং ম্যানিপুলেশন সক্ষমতাগুলির অভাব ইত্যাদির সাথে যাইহোক, আমি এটিকে একসাথে রেখে মজা পেয়েছি, এবং এটিই সত্যই গুরুত্বপূর্ণ ? ;)

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

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