একটি টেলিট প্রদর্শন করুন (বিভিন্ন বেসে)


16

টালিং হ'ল একটি সাধারণ গণনা ব্যবস্থা যা বেস 5 এ কাজ করে the সারা বিশ্বে বিভিন্ন বিভিন্ন টালিং সিস্টেম ব্যবহৃত হয় তবে বেশিরভাগ ইংরাজীভাষী দেশগুলিতে যেটি ব্যবহার করা হয় সম্ভবত এটি সবচেয়ে সহজ vert উল্লম্ব রেখাগুলি চিহ্নিত করে ইউনিট গণনা করুন, তারপরে প্রতিটি 5 তম চিহ্নটি চারটির পূর্ববর্তী সংগ্রহের মাধ্যমে একটি অনুভূমিক রেখা রাখে। এটি ক্লাস্টার করে 5 টি গ্রুপে ট্যালি চিহ্নগুলি (এবং তাদের দ্রুত গণনা সহজ করে তোলে)

আপনি একটি প্রোগ্রাম লিখতে যাচ্ছেন যা একটি নির্দিষ্ট মান পর্যন্ত ট্যালি চিহ্নগুলি প্রদর্শন করে। তবে, শুধুমাত্র বেস 5 এ তাল মিলানো বিরক্তিকর! সুতরাং, আপনার প্রোগ্রামটি বিভিন্ন ঘাঁটিতে লম্বা প্রদর্শন করতে সক্ষম হওয়া উচিত।

ইনপুট

ইনপুটটি এক বা দুটি অ-নেতিবাচক পূর্ণসংখ্যার মানগুলি কমা দ্বারা পৃথক করা হবে (যেমন 9বা 8,4)। প্রথম সংখ্যাটি সেই মান যা ট্যালি দ্বারা প্রদর্শিত হবে। দ্বিতীয় মানটি টেলির ভিত্তি। দ্বিতীয় মানটি যদি না দেওয়া হয় তবে বেস 5 ব্যবহার করুন

আউটপুট

আউটপুটটি ASCII আর্ট ট্যালি চিহ্ন হিসাবে প্রতিনিধিত্ব করা ইনপুটযুক্ত মান হবে। আপনি এর বিরুদ্ধে আপনার প্রোগ্রামটি পরীক্ষা করতে পারেন এমন কয়েকটি উদাহরণ এখানে দেওয়া হয়েছে - আপনার আউটপুটটি তাদের সাথে ঠিক মিলবে!

ইনপুট: 12বা12,5

 | | | |   | | | |   | |
-+-+-+-+- -+-+-+-+-  | |
 | | | |   | | | |   | |

ইনপুট: 7,3

 | |   | |   |
-+-+- -+-+-  |
 | |   | |   |

ইনপুট: 4,2

 |   |
-+- -+-
 |   |

ইনপুট: 6,1বা 6,10(নেতৃস্থানীয় স্থানগুলি লক্ষ্য করুন)

 | | | | | |
 | | | | | |
 | | | | | |

এছাড়াও লক্ষ্য করুন যে বেস 1টি বেমানান হওয়ার উদ্দেশ্যে করা হয়েছে - কেবল উল্লম্ব লাইনগুলি ব্যবহার করা উচিত।

যদি ইনপুট করা মানগুলির মধ্যে কোনওটি 0 হয় তবে কোনও আউটপুট থাকা উচিত নয় (এবং আপনার প্রোগ্রামটি নিখুঁতভাবে শেষ হওয়া উচিত)।

বিধি

  • এটি , সুতরাং সংক্ষিপ্ত সঠিক প্রয়োগকরণ (বাইটে) জিতেছে।
  • ইনপুট / আউটপুট যে কোনও উপযুক্ত মাঝারি হতে পারে (যেমন স্টিডিন / স্টডআউট, ফাইল ...)।
  • ইনপুটটি যদি আপনার টার্গেট ভাষার জন্য আরও উপযুক্ত হয় তবে একাধিক কমান্ড-লাইন আর্গুমেন্টের আকারে বা স্পেসগুলি দ্বারা পৃথক করা যেতে পারে।
  • আউটপুটে ট্রেলিং করা নতুন লাইনের অনুমতি রয়েছে। ট্রেলিং স্পেস হয় না। এই নিয়মটি কেবল তখনই প্রযোজ্য যখন কোনও আউটপুট থাকে (যেমন যখন ইনপুটযুক্ত মান 0 হয় না)।
  • কোনও কোড ইনপুট না থাকলে আপনার কোডটি অবশ্যই বেস 5 এ ডিফল্ট হতে হবে।

3
আউটপুট 6,1আরও চেহারা উচিত নয় -+- -+- -+- -+- -+- -+-?
পিটার টেলর

3
যদি আপনি উল্লেখ করেন "ইনপুটটি কমা দ্বারা পৃথক এক বা দুটি ধনাত্মক পূর্ণসংখ্যার মান হবে (যেমন 9 বা 8,4)" " তাহলে আমাদের এটিকে প্রদত্ত হিসাবে গ্রহণ করতে সক্ষম হওয়া উচিত এবং "আপনার প্রোগ্রামটি শক্তিশালী হওয়া উচিত - আপনার ইনপুটটি বৈধ করা উচিত ..." এক বা দুটি সংখ্যা পরিচালনা করার বাইরেও।
AndoDaan

1
@ পিটারটেলর দু'জনকে -+-উপস্থাপন করবেন কারণ এর মধ্য দিয়ে একটি উল্লম্ব রেখা এবং একটি অনুভূমিক স্কোর রয়েছে। বেস 1 এ কেবল উল্লম্ব রেখা থাকবে। @ অ্যান্ডোডান প্রশংসিত
শান লাথাম

ঠিক আছে, --- --- --- --- --- ---তাহলে। অন্যান্য ঘাঁটির সাথে ধারাবাহিকতার জন্য আপনাকে b-1উল্লম্ব লাইনের মাধ্যমে একটি অনুভূমিক স্ট্রাইক লাগানো উচিত putting যদি এটি বেমানান হওয়ার উদ্দেশ্যে হয় তবে আপনার তা স্পষ্ট করে বলা উচিত।
পিটার টেইলর

আমি এটা করেছি। দুঃখিত, আমি ভেবেছিলাম এটি নিহিত ছিল।
শান ল্যাথাম

উত্তর:


4

সিজেএম 103 85 72 টি অক্ষর

এটি http://cjam.aditsu.net/ এ চেষ্টা করুন ।

মূল

q","/(i:A\_,{~i}{;5}?:B_@*{(_{" |"*S"l"++AB/*AB%}{;MA}?\:J" |l""-+ "er\" |"*N+_J\+@2$+@J\+++"l"Ser}{;}?

শূন্যস্থান, রেখা এবং ফাঁকা থাকার জন্য একটি এল এর সাহায্যে তালির একটি সেট নির্ধারণ করে কাজ করে। তারপরে দ্বিতীয় লাইনটি তৈরি করতে er (ট্রান্সলিটেশন) ফাংশনটি গ্রহণ করে। বেশিরভাগ অদক্ষ অংশ 1 এবং 0 টি বিশেষ ক্ষেত্রে কাজ করে। আমি এটির উন্নতি করার সাথে সাথে সম্পাদনা করব। টিপটি অনুধাবন করতে আমি অনেক দীর্ঘ সময় নিয়েছি: দ্বিতীয় ইনপুটটি 1 হিসাবে থাকা অনন্ত বা প্রথম ইনপুট +1 এর সমান হওয়ায় এটি 1 টির সমান হলে পুনরায় সংজ্ঞায়িত করে কাজটি প্রচুর কাজ সংরক্ষণ করে।

কমা সীমানা দিয়ে এখন পর্যন্ত সর্বাধিক উন্নত

l",":G/(i:A\_5a?~i:B_@*{(_" |":K*\{SG++AB/*AB%}{A}?\_KG+"-+ "er[\GSer_@@M]\K*N+*}{;}?

স্থান সীমিত ইনপুট দিয়ে এখন পর্যন্ত সর্বাধিক উন্নত

স্বাভাবিকভাবে সিজেএম প্রকৃতপক্ষে স্থান সীমিত ইনপুটটির জন্য ডিজাইন করা। 20,3 এর পরিবর্তে 20% এ ইনপুট স্থাপন করা একটি বিশাল সুবিধা।

ri:Aq_5s?S-i(_)A)?:B*{B(" |":K*STs++ABmd@@*_K"-+"er[\_@@M]\K*N+*TsSer}M?

5

পাইথন 2 - 111 108 119 144 140 136 135 134 - এটি ব্যবহার করে দেখুন

ঠিক আছে, এর চেষ্টা করে দেখুন:

i=input()
n,b=[(i,5),i][i>[]]
o=b-1
a=[n,n%b][b>1]*' |'
m=(b>1)*n/b
s=(' |'*o+'  ')*m+a
print(s+'\n'+('-+'*o+'- ')*m+a+'\n'+s)*(b*n>0)

সম্পাদনা: আমি অগ্রাহ্য করেছি যদি n==0বা হয় তবে কোনও আউটপুট থাকা উচিত নয় b==0। এটি আমার 11 টি অক্ষর ব্যয় করে। :(

সম্পাদনা: ঠিক আছে, মন্তব্যে উল্লিখিত দ্বিতীয় সমস্যাটি ঠিক করার পরে আমার সমাধানটি মূলত বিটডেমগুইস থেকে একটিতে রূপান্তরিত হয়েছে।


এটি যখন নিউজলাইনগুলি মুদ্রণ করে তখন যে কোনও একটি ইনপুট (বা উভয়) শূন্য হয় যা চ্যালেঞ্জ অনুযায়ী অনাকাঙ্ক্ষিত is এছাড়াও, যদি কেবলমাত্র একটি নম্বর প্রোগ্রামটিতে ইনপুট হয়?
বিটডেমগুইজ

1
দ্বিতীয় মানটি বাদ দিলে এটি ব্যর্থ হয় ( bএই ক্ষেত্রে 5 হওয়া উচিত)। আমি প্রশ্নে আরও স্পষ্ট করব। সম্পাদনা: ওহ, কিছু মনে করবেন না, আপনি যেমনটি এই মন্তব্যটি করেছিলেন ঠিক তেমনই ঠিক করেছেন!
শান ল্যাথাম

এটি কোন পাইথন?
বিটা ক্ষয়

এটি পাইথন ২.7.৮। - ওহ, খুব শেষে একটি ক্ষুদ্র ভুল ছিল ...
Falko

1
যদি এটি পাইথন ২.x এর n/bপরিবর্তে আপনি আরও একটি চরিত্র সংরক্ষণ করতে না পারেন n//b?
এমিল

5

ব্যাশ, 239 228 199 189 188

এখানে আমার চেষ্টা, এটি অনেক গল্ফ করা যেতে পারে।

দ্রষ্টব্য: দ্বিতীয় লাইনটি 2 থেকে 5 বিয়োগ করে না, এটি খালি থাকলে একটি ডিফল্ট মান সেট করে $2!

n=$1
b=${2-5}
((n<1&b<1))&&exit
while ((n>b&b>1));do
n=$[n-b]
x+=\
y+=-
for i in `seq $[b-1]`;{
x+='| '
y+=+-
}
x+=\
y+=\
done
for j in `seq $n`;{
x+=' |'
y+=' |'
}
echo -e "$x\n$y\n$x"

কি {1..$n}পরিবর্তে কাজ `seq $n`?
FUZxxl

@FUZxxl দুর্ভাগ্যক্রমে নয়, h=8;echo {1..$h}ফলাফলগুলি{1..8}

এটা ভালো না.
FUZxxl

3

পাইথন - 171 143

i=input();t,b=i if[0]<i else(i,5);b=[b,t+1][b==1];l,d,m,o=' |',t/b,t%b,b-1;r=(l*o+'  ')*d+l*m
if t*b>0:print r,'\n',('-+'*o+'- ')*d+l*m,'\n',r

প্রোগ্রামটি বেশ সোজা-এগিয়ে রয়েছে:

  • ইনপুট পান এবং আনপ্যাক করার চেষ্টা করুন t,b। যদি এটি ব্যর্থ হয়, কেবল সঠিক মান নির্ধারণ করুন।
  • যদি বেসটি ছিল তবে 1এর মান এমন কিছুতে পরিবর্তন করুন যা সমস্ত উল্লম্ব লাইনগুলি সহজেই হ্যান্ডেল করতে পারে ( t+1)।
  • কিছু ভেরিয়েবল সেট করুন এবং দীর্ঘদের নীচে এবং শীর্ষ বিভাগগুলি তৈরি করুন।
  • দু'টিই শূন্য tএবং bঅ-শূন্য হলে মুদ্রণ করুন ।

সম্পাদনা 1: কিছু জায়গায় খেলার পরে inputপরিবর্তে ফাংশনটি ব্যবহার করুন raw_input

সম্পাদনা 2: আমার শূন্য নন যাচাইয়ের মাধ্যমে একটি ছোট বাগ চিহ্নিত করার জন্য ফালকোকে ধন্যবাদ Thanks এখন আমাদের কোডটি মূলত অভিন্ন, কিছু পরিবর্তনশীল নাম এবং কিছু ছোট যুক্তিযুক্ত।

সম্পাদনা 3: ধন্যবাদ কিভাবে পাইথন সিকোয়েন্স এবং বিভিন্ন ধরনের তুলনা , আমরা তুলনা করতে পারবেন iএকটি থেকে listআমাদের একটি খাটো সংস্করণ পেতে try...exceptব্লক।

নিখরচায় সংস্করণটি এখানে:

i=input()

# If True, `i` must be a list
if [0]<i:
    t,b=i
# Otherwise, we know its a number (since `list` comes after `int` lexicographically.)
else:
    b=5
    t=i

b = b if b==1 else t+1
l=' |'
d=t/b
m=t%b
o=b-1

r=(l*o+'  ')*d+l*m
if t and b:
    print r,'\n',('-+'*o+'- ')*d+l*m,'\n',r

আমার মনে t&bহয় False10,5 এর জন্য। অন্যথায় আমাদের সমাধান রূপান্তরিত হয়! ;)
ফালকো

@ ফালকো আপনি উভয় দিক থেকেই ঠিক আছেন! তারা জানে মহান মনের বিষয়ে তারা কী বলে।
বেটডেমগুইস

এটি iস্কেলার বা তালিকা রয়েছে কিনা তা পরীক্ষা করার জন্য যদি আমরা একটি ছোট উপায় খুঁজে পাই তবে এটি সত্যিই দুর্দান্ত । তাহলে আমরা try ... exceptদানবটিকে ফেলে দিতে পারতাম ।
ফালকো

@ ফালকো আমি মনে করি যে আমি আরও 1 বারের চেয়ে আরও ভাল একটি চেক পেয়েছি। A listসর্বদা একটি int এর চেয়ে বড় is এছাড়াও, lists এর সাথে লিক্সোগ্রাফিকাল ক্রমের সাথে তুলনা করা হচ্ছে। সুতরাং আমরা যদি তুলনা করি তবে এটি [0]<iসর্বদা ফিরে আসবে Falseযদি iএকটি সংখ্যা হয় এবং Trueযদি iএকটি তালিকা হয় (একটি শূন্য-প্রথম উপাদান সহ)।
বিটডেমগুইজ

1
গ্রেট! আমি আপনার পদ্ধতির আরও সংক্ষিপ্ত। দুর্দান্ত টিম ওয়ার্ক! :)
ফালকো

3

জাভা, 343

class C{public static void main(String[]a){long n=new Long(a[0])+1,b=a.length>1?new Long(a[1]):5;if(b>0){if(b<2)b=(int)2e9;int i;for(i=1;i<n;i++)p(i%b>0?" |":"  ");p("\n");for(i=1;i<n-n%b;i++)p(i%b>0?"-+":"- ");if(n>b)p("- ");for(i=1;i<n%b;i++)p(" |");p("\n");for(i=1;i<n;i++)p(i%b>0?" |":"  ");}}static void p(String s){System.out.print(s);}}

কম গল্ফড:

class C {
  public static void main(String[] a) {
    long n=new Long(a[0])+1, b=a.length>1 ? new Long(a[1]) : 5;
    if(b>0) {
      if(b<2) b=(int)2e9; // if the base is 1, pretend the base is 2 billion
      int i;
      for(i=1;i<n;i++) p(i%b>0 ? " |" : "  ");
      p("\n");
      for(i=1;i<n-n%b;i++) p(i%b>0 ? "-+" : "- ");
      if(n>b) p("- ");
      for(i=1;i<n%b;i++) p(" |");
      p("\n");
      for(i=1;i<n;i++) p(i%b>0 ? " |" : "  ");
    }
  }
  static void p(String s) {
    System.out.print(s);
  }
}

আপনি করে কয়েক সঞ্চয় করতে পারেন iএকটি longতাই আপনি এটি আলাদাভাবে ডিক্লেয়ার হবে না। করে আরো কয়েকটি i++%b>0পরিবর্তে আপনার লুপ এটা আলাদাভাবে বৃদ্ধিশীল (এবং i++<n%bতৃতীয় লুপ)। আর একটি ব্যবহার করে b=b<2?(int)2e9:b
Geobits

3

পার্ল - 167 165 156

my($n,$b)=($ARGV[0]=~/(\d+)(?:,(\d+))?/,5);print$b>1?map{join(" ",($_ x($b-1))x int($1/$b)," | "x($1%$b))."\n"}(" | ","-+-"," | "):join" ",("---")x$1if$1*$b

ungolfed

my($n,$b) = ($ARGV[0] =~ /(\d+)(?:,(\d+))?/, 5);
print($b>1 ?
    map{ 
        join(" ",($_ x ($b-1)) x int($1/$b)," | " x ($1%$b))."\n"
    } (" | ","-+-"," | ") :
    join " ", ("---") x $1
) if $1 * $b

প্রদর্শন অনুভূমিক রেখা বেস 1 :( উল্লম্ব বেশী পরিবর্তে
চীনা Perl বর্বর

হ্যাঁ, এটি একটি প্রয়োজনীয়তা ch দয়া করে
প্রশ্নে

3

সি - 193

আমি খুবই দুঃখিত. 1 এর জন্য বিশেষ ক্ষেত্রে মোকাবেলা করা কিছুটা খারাপ হ্যাক ছিল তাই আমার ধারণা এটি আরও ভাল পদ্ধতির সাথে আরও গল্ফ করা যেতে পারে। এছাড়াও, এই কোড আউটপুট শুরুর সময় একটি নতুন লাইন অন্তর্ভুক্ত, সুতরাং যদি এটি অনুমোদিত না হয়, দয়া করে আমাকে জানান।

অবশ্যই খুব কুৎসিত চেহারার সংজ্ঞা সর্বদা সহায়তা করে :)

অক্ষর গণনায় কেবল প্রয়োজনীয় স্পেস এবং নতুন লাইন অন্তর্ভুক্ত।

#define P printf(
#define L P" |")
#define A P"\n");for(i=0;i<a;)b==1?i++,L:i++&&i%b==0?P
i;
main(a,b)
{
    scanf("%d,%d",&a,&b)<2?b=5:!b?a=0:a;
    if(a){
    A"  "):L;
    A"- "):a%b&&i>a/b*b?L:P"-+");
    A"  "):L;}
}

আপনার কোডটি নতুন মানগুলি মুদ্রণ করে মনে হচ্ছে যখন মানগুলির মধ্যে একটি শূন্য হয়। এটি স্পষ্টতই অনুমোদিত নয়। আপনার সমাধান মেনে চলছে না।
FUZxxl

@FUZxxl আপনি ঠিক বলেছেন, আমি এটি মিস করেছি! এই খারাপ দ্রুত ফিক্সটি আপাতত করতে হবে। আমি আশা করি শীঘ্রই আরও ভাল উপায় খুঁজে পেতে আমার কাছে সময় হবে।
অলবিয়ার্ট

আমি প্রায় নিশ্চিত আপনি প্রতিস্থাপন কয়েকটি অক্ষর সংরক্ষণ করতে পারবেন printfসঙ্গে puts, এবং প্রতিস্থাপন returnএকটি তিন অপারেটর সঙ্গে।
মিলিনন

@ মিলিনন সমস্যাটি putsহ'ল এটি প্রতিবার একটি নতুন লাইন যুক্ত করে :( এবং ত্রিনিয়ী অপারেটরের জন্য তাদের ভিতরে returnএস বা forএস যুক্ত করা সম্ভব নয় !) আপনার মন্তব্যটি আমাকে আরও কয়েকটি চরিত্র সংরক্ষণ করার ধারণা দিয়েছে returnযদিও সহজেই মুছে
ফেলা.ধন্যবাদ

2

সি # 271bytes

সবচেয়ে সংক্ষিপ্ত নয়, 0 টি ইনপুট হিসাবে গ্রহণ করার প্রয়োজনের কারণে আমি ইনপুট রিডিং গল্ফ করতে পারিনি।

using C=System.Console;class P{static void Main(){var L=C.ReadLine().Split(',');int t=int.Parse(L[0]),f=L.Length>1?int.Parse(L[1]):5,r=3,i;for(var R="";t*f>0&r-->0;C.WriteLine(R.TrimEnd()))for(R="",i=0;i<t;R+=r==1&i++<t-t%f?(i%f<1?"- ":"-|"):i%f<1?"  ":" |")f+=f<2?t:0;}}

ফর্ম্যাট কোড:

using C=System.Console;

class P
{
    static void Main()
    {
        var L=C.ReadLine().Split(',');
        int t=int.Parse(L[0]),f=L.Length>1?int.Parse(L[1]):5,r=3,i;

        for(var R="";t*f>0&r-->0;C.WriteLine(R.TrimEnd()))
            for(R="",i=0;i<t;R+=r==1&i++<t-t%f?(i%f<1?"- ":"-|"):i%f<1?"  ":" |")
                f+=f<2?t:0;
    }
}

1

লুয়া - 219 203 বাইট

আমি "|" এর বি কপিগুলির তৈরি নকলগুলির জন্য গিয়েছিলাম, তারপরে "|" এর আর অনুলিপিগুলি যুক্ত করব শেষে. আমার মনে হচ্ছে সম্ভবত একবারে '"ট্যালি আপ" "|" এর সাথে স্ট্রিংয়ের কাছে যাওয়া উচিত ছিল।

l=' |'s=string.rep _,_,a,b=io.read():find'(%d+)%D*(%d*)'b=tonumber(b)or 5 d=(a-a%b)/b f=b>1 and s(s(l,b-1)..'  ',d)g=b>1 and s(s('-+',b-1)..'- ',d)r=b>1 and a%b or a e=s(l,r)..'\n'print(f..e..g..e..f..e)

ungolfed:

l=' |'          --the base string
s=string.rep    --string.rep will be used a lot, so best shorten it

_,_,a,b=io.read():find'(%d+)%D*(%d*)' --reads a,b I'm probably way of the mark with this one

b=tonumber(b)or 5

d=(a-a%b)/b -- shorter than math.floor(a/b), d equal the vertical mark

f=b>1 and s(s(l,b-1)..'  ',d) or '' --creates d multiples of b multiples of "|" more or less
g=b>1 and s(s('-+',b-1)..'- ',d)or''--same as above but with the middle "-+-"

r=b>1 and a%b or a --idk maybe i should set r before d(a- a%b )/b

e=s(l,r)..'\n'  -- makes the remainder string, notice that if b==1  then e will output all the "|" 

print(f..e..g..e..f..e) -- here's where the real magic happens!

নমুনা:

c:\Programming\AnarchyGolfMine>lua test.lua
13,5
 | | | |   | | | |   | | |
-+-+-+-+- -+-+-+-+-  | | |
 | | | |   | | | |   | | |


c:\Programming\AnarchyGolfMine>lua test.lua
6,2
 |   |   |
-+- -+- -+-
 |   |   |


c:\Programming\AnarchyGolfMine>lua test.lua
18,1
 | | | | | | | | | | | | | | | | | |
 | | | | | | | | | | | | | | | | | |
 | | | | | | | | | | | | | | | | | |

1
আপনি কি একটি স্বল্পতর আরও পঠনযোগ্য এবং ungolfed সংস্করণ পোস্ট করতে পারেন? লুয়ায় গল্ফিং আকর্ষণীয় দেখায়!

@ আলেসান্দ্রো সম্পন্ন হয়েছে। এবং ধন্যবাদ, এটি দু'টি জিনিস খুঁজে পেয়েছিল যা আমি মিস করেছি।
AndoDaan

1

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

এটি অতিরিক্ত জটিল হতে পারে।

s=prompt().split(",");a=+s[0];b=s[1];b=b?+b:5;o=b>1;v=" | ";q=w="";for(g=~~(a/b),c=o?a-g:a;g+1;g--,q+=" ",w+=" ")for(i=o;c&&i<b;i++)c--,q+=v,w+=g&&o?"-+-":v;if(a&&b)console.log(q+'\n'+w+'\n'+q)

মন্তব্য করা সংস্করণ

s=prompt().split(",");
a=+s[0];
b=s[1];
b=b?+b:5;   // convert b to int and default to 5
o=b>1;      // special handling for b0 and b1
v=" | ";
q=w="";
// calculate number of lines and number of groups
for(g=~~(a/b),c=o?a-g:a;g+1;g--,q+=" ",w+=" ")
    for(i=o;c&&i<b;i++)
        c--,  // decrease line count
        q+=v,
        w+=g&&o?"-+-":v; // use " | " for last group and "-+-" for others
if(a&&b) // handle b0
    console.log(q+'\n'+w+'\n'+q)

1

পাইথন - 127 123 122

অল্প অল্প অল্প অজগর সংস্করণ সহ স্নেকিং করা।

সম্পাদনা: স্থির 0 কোনও কিছুই মুদ্রণ করছে না এবং পুনরায় ত্যাগ করবে না, একই দৈর্ঘ্য শেষ

k=input()
k=i,j=((k,5),k)[k>[]]
for m in[' |','-+',' |']*all(k):
 print(m*(j-1)+m[0]+' ')*(i/j*(j>1))+' |'*(i%(j+(j<2)*i))

0

সি (২০7 টি অক্ষর)

ঠিক আগে exitলাইনটি কেবলমাত্র সুসংগঠনের জন্য।

#define P printf(
#define t(v)for(a=c;b<=a;a-=b)a-c&&P" "),P v+1),q(b,v);q(a," |");P"\n");
q(n,c){while(n--)P c);}a;b;c;main(){scanf("%d,%d",&c,&b)<2?b=5:0;b&&c||
exit();b==1?b=32767:0;t("| ")t("+-")t("| ")}

scanfঅলবার্ট থেকে নির্লজ্জ ব্যবহার চুরি। লক্ষ্য করুন যে এই সমাধানটি জিসিসি দিয়ে সংকলন করে না কারণ এটি কোনও অযৌক্তিক প্রোটোটাইপ প্রয়োগ করার চেষ্টা করেexit । মত একটি ওয়ার্কিং সি সংকলক সঙ্গে সংকলন tcc। এছাড়াও, এই ফাংশনটি 64 বিট প্ল্যাটফর্মগুলিতে কাজ করতে বা নাও করতে পারে। যত্ন সহকারে ব্যবহার করুন।

এটি ভিত্তিতে ভিত্তি করে তৈরি অরক্ষণীয় বাস্তবায়ন এখানে:

#include <stdio.h>
#include <stdlib.h>

static void
tally_line(int base, int count, const char *str)
{
     int follower = 0, i;

     /* full tallies first */
     for (; count >= base; count -= base) {
          if (follower++)
               putchar(' ');

          /* only print second character */
          printf(str + 1);

          for (i = 0; i < base; i++)
               printf(str);
     }

     /* partial tally */
     for (i = 0; i < count; i++)
          printf(" |");

     /* newline */
     puts("");
}

extern int
main(int argc, char **argv)
{
     int base, count;

     /* do away with program name */
     count = atoi(*++argv);

     base = argc - 3 ? 5 : atoi(*++argv);

     /* remove 0 later */
     base | count || exit(0);

     /* a crossed-out tally never appears for large numbers */
     if (base == 1)
          base = 32767;

     tally_line(base, count, "| ");
     tally_line(base, count, "+-");
     tally_line(base, count, "| ");

     return (EXIT_SUCCESS);
}

0

পাইথন 2 , 134 126 123 114 বাইট

lambda i,j=5,a=" |":"\n".join(("",(a*~-j+"  ","-+"*~-j+"- ")[x%2]*(i/j))[j>1]+a*(i,i%j)[j>1]for x in(0,1,2)if i*j)

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

পুরানো প্রশ্ন আমি জানি তবে যাই হোক না কেন মজাদার। যোগদানের পর থেকে আমি শিখেছি এমন কয়েকটি কৌশল চেষ্টা করার সুযোগ।

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