অপারেটর এএসসিআইআই আর্ট


22

চ্যালেঞ্জ

একটি প্রদত্ত হওয়া ASCII নিচের তালিকা এবং একটি সংখ্যা n থেকে অপারেটর, অপারেটর দৈর্ঘ্য থাকার রেখাংশ সঙ্গে চরিত্র যে অপারেটর ব্যবহার অপারেটরের একটি ASCII উপস্থাপনা আঁকা এন

ইনপুট

তালিকা থেকে একটি ASCII অক্ষর = + - x /এবং nযেখানে একটি পূর্ণসংখ্যা n >= 1। (আমি এর xপরিবর্তে *এবং /পরিবর্তে ব্যবহার করছি ÷, তবে আপনি যে কোনওটি সহজতর ব্যবহার করতে পারেন)। জন্য +এবং x, আপনি শুধুমাত্র বিজোড় সংখ্যা হ্যান্ডেল করতে প্রান্তিককরণ সঙ্গে সমস্যা এড়ানোর জন্য আছে।

আউটপুট

দৈর্ঘ্য n এর বিভাগগুলি সহ অক্ষর দ্বারা রচিত অপারেটরের একটি ASCII অঙ্কন। অনুভূমিক অংশের উলম্ব / অনুভূমিক দূরত্বের পার্থক্যগুলি অফসেট করতে অক্ষরের মধ্যে ফাঁকা স্থান থাকা উচিত।

বিধি

এটি , তাই বাইট জেতে সংক্ষিপ্ততম কোড। স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ।

উদাহরণ

ইনপুট: + 3

  +
+ + +
  +

ইনপুট: = 4

= = = =
= = = =

ইনপুট: = 10

= = = = = = = = = =
= = = = = = = = = =

ইনপুট: - 2

- -

ইনপুট: / 10

         /
        /
       /
      /
     /
    /
   /
  /
 /
/

ইনপুট: x 7

x     x
 x   x
  x x
   x
  x x
 x   x
x     x

আপনি কি পরীক্ষার কেস যুক্ত করতে পারেন = 10?
রড

1
আমি ধরে নিচ্ছি "x" এবং "+" ইম্পিওড বিজোড় সংখ্যা? (আমি সবেমাত্র দেখেছি যে DRMcMoylex প্রায় একই প্রশ্ন জিজ্ঞাসা করেছিল।)
মার্টিন রোজেনউ

1
@ মার্টিনরোসেনাউ হ্যাঁ, ইনপুট বিভাগ থেকে: "+ এবং এক্স এর জন্য, প্রান্তিককরণের সমস্যাগুলি এড়াতে আপনাকে কেবল বিজোড় সংখ্যাগুলি পরিচালনা করতে হবে" "
করভাস_192

কেন এক্স এবং / ফাঁক করা হয়নি?
অ্যাডম

1
নেতৃস্থানীয় সাদা স্থান অনুমোদিত?
অ্যাডম

উত্তর:


5

পিপ , 62 59 56 বাইট

55 বাইট কোডের, -Sপতাকা জন্য +1 ।

[sXbRA_AEv-_aM,b(Y^aWR_Xb/2s)MyRVsX,b.aYaXbJsxyRL2x]@Aa

নোট এই সমাধান ইনপুট সঙ্গে কাজ করে যে ÷বিভাজন এবং *, গুণ জন্য যদিও সেই অক্ষর ব্যবহার হওয়া ASCII অত্যাধুনিক আঁকা /এবং xযথাক্রমে। ওপি স্পষ্ট করে জানিয়েছে যে এটি ঠিক আছে। এটি অনলাইন চেষ্টা করুন!

কিভাবে?

এখানে আংশিক ব্যবধানযুক্ত এবং মন্তব্য করা সংস্করণ । নোট করুন aএবং bহ'ল যথাক্রমে কমান্ড-লাইন অর্গগুলি, অর্থাৎ অপারেটর এবং আকার। -Sপতাকা নিয়ন্ত্রণ কিভাবে তালিকা আউটপুট আছেন: এটি প্রথম নতুন লাইন উপর যোগদান করে, কিন্তু স্পেস কোন নেস্টেড তালিকা যোগদান করে।

[                 Build a list of all possible figures:
 sXbRA_AEv-_aM,b   0 - Multiplication
 (Y^aWR_Xb/2s)My   1 - Addition
 RVsX,b.a          2 - Division
 YaXbJs            3 - Subtraction
 x                 4 - Empty
 yRL2              5 - Equals
 x                 6 - Empty
] @ Aa            Index, mod 7, with ASCII value of a

এবং এখানে পৃথক বিভাগগুলি রয়েছে:

গুণ

চিত্রের প্রতিটি সারির জন্য, আমরা ফাঁকের একটি স্ট্রিং উত্পন্ন করি এবং তারপরে তাদের দুটিকে ইনপুট চরিত্রের সাথে প্রতিস্থাপন করি। সারি জন্য i, আমরা সূচকগুলিতে স্পেসগুলি প্রতিস্থাপন করতে চাই iএবং b-1-i; তবে মনে রাখবেন যে উত্তরোত্তরগুলি নেতিবাচক সূচকটি ব্যবহার করতে পারে -1-i। (এটি এমনকি সংক্ষিপ্ত কারণ ভেরিয়েবলটি vনেগাটি ভি ই 1 তে পূর্বনির্ধারিত )

sXbRA_AEv-_aM,b
            M,b  Map this function to range(b):
sXb                Space, repeated b times
     _             Function arg
      AE           (Implicitly) convert to list and append element...
        v-_        -1 minus function arg
   RA              Replace the characters at those indices...
           a       ... with input character
                 The resulting list is output with one item per line

সংযোজন

থেকে কৌশল ব্যবহার করে আমার একটি ঠালা বর্গক্ষেত্র আঁকুন উত্তর, আমরা একটি ফাংশন যে একটি গোপন সংজ্ঞায়িত +মধ্যে b/2যুক্তি কপি এবং অক্ষর একটি তালিকা হিসেবে ফলাফল দেখায়। (পূর্ণসংখ্যা বিভাগটি //প্রয়োজনীয় নয় কারণ স্ট্রিং পুনরাবৃত্তি অপারেটর Xস্বয়ংক্রিয়ভাবে পূর্ণসংখ্যায় ছাঁটাই হয়)) প্রথমে, আমরা এই ফাংশনটিকে একটি স্পেসে কল করি, দিচ্ছি [" ";" ";"+";" ";" "]; তারপরে, আমরা সেই ফলাফলটিতে একই ফাংশনটি ম্যাপ করি, [" ";" ";"+";" ";" "]বেশিরভাগ লাইনে কিন্তু ["+";"+";"+";"+";"+"]কেন্দ্ররেখায়। এই নেস্টেড তালিকাটি আউটপুট হয় কারণ -Sপতাকাটির কারণে একটি সারিতে সমস্ত অক্ষরের মধ্যে ফাঁকা স্থান থাকে এবং সারিগুলির মধ্যে নিউলাইন থাকে।

(Y^aWR_Xb/2s)My
                 Anonymous function:
      _Xb/2        Function arg, repeated b/2 times (implicitly rounded down)
   aWR             Wrap a in two copies of the above
  ^                Split resulting string into list of chars
 Y               Yank that function into y
(          s)    Apply function y to space
             My  Map y to that result

বিভাগ

প্রতিটি সারিতে ইনপুট চরিত্রের পরে b-1এবং এর মধ্যে 0ফাঁকা স্থান থাকে a

RVsX,b.a
    ,b    Range(b)
  sX      Space, repeated that many times (works itemwise)
      .a  Concatenate a (itemwise)
RV        Reverse (puts the larger number of spaces at the beginning)
          Outputs newline-separated

বিয়োগ

ইনপুট চরিত্রের একটি পৃথক পৃথক সারিতে তৈরি করুন। পরে একটি অনুলিপি সংরক্ষণ করুন।

YaXbJs
 aXb    b copies of a
    Js  Join on space
Y       Yank into y (overwrites the function from earlier, but we're done using it anyway)
        This is a string, so it just gets output

সমান

বিয়োগের পদক্ষেপটি আমাদের যা প্রয়োজন তার অর্ধেক সঞ্চয় করে - yএটি দ্বিগুণ করুন।

yRL2  (Implicitly) convert y to list and repeat it twice
      Outputs newline-separated

ডামি xমানগুলি মূল তালিকায় প্যাড করার জন্য রয়েছে যাতে প্রতিটি ইনপুট চরিত্রের জন্য মডিউলার ইনডেক্সিং একটি অনন্য সূচক দেয় +-*÷=


13

ভি , 78, 72, 71, 68, 65, 63, 62 , 61 বাইট

Ç=ü-/Àé X
ç^Ó/é Àä$
ç+/ÀÄM|ÀR+ 
ç=/Ä
ç¯/lòhYpX
çx/rxòl3Äjxlrx

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

সর্বদা হিসাবে, 05AB1E এর সাথে ঘাড় এবং ঘাড় যুদ্ধ সত্যিই মজাদার!

যেহেতু এটিতে অ-এসসিআইআই অক্ষর রয়েছে তাই এখানে একটি হ্যাক্সডাম্প রয়েছে:

0000000: c73d fc2d 2fc0 e920 580a e75e d32f e920  .=.-/.. X..^./. 
0000010: c0e4 240a e72b 2fc0 c44d 7cc0 522b 200a  ..$..+/..M|.R+ .
0000020: e73d 2fc4 0ae7 af2f 6cf2 6859 7058 0ae7  .=/..../l.hYpX..
0000030: 782f 7278 f26c 33c4 6a78 6c72 78         x/rx.l3.jxlrx

এই জন্য আউটপুটে নেতৃস্থানীয় শূণ্যস্থান তৈরি করে =এবং -কিন্তু এই অনুমতি দেওয়া হবে বলে মনে হয় । যদি এটি অনুমোদিত না হয় তবে বিনা দ্বিধায় মন্তব্য করুন এবং আমি এটি আবার রোল করব।

ব্যাখ্যা

"গ্লোবাল কমান্ড" (উদাঃ ç) প্রতিটি লাইনে নির্দিষ্ট কমান্ডের একটি নির্দিষ্ট সেট প্রয়োগ করে যা একটি নির্দিষ্ট রেজেক্সের সাথে মেলে। বাক্য গঠনটি হ'ল

ç<compressed regex>/<commands>

এটি শর্তাধীন / স্যুইচ স্টেটমেন্ট সিমুলেট করার সহজতম উপায়। আমার আসল উত্তরে, আমি প্রতিটি ভিন্ন চরিত্রের জন্য আমাদের সন্ধান করা দরকার তার জন্য ডানহাতে পুরো ASCII-art তৈরি করেছি। যাইহোক, এই আউটপুটগুলির অনেকগুলি একই কমান্ডের প্রয়োজন। তাই আমি তাদের একত্রিত। প্রথম কমান্ড ( 'গ') আসলে বিশ্বব্যাপী কমান্ডের বিপরীত, এটি যে লাইন কমান্ড প্রযোজ্য না Regex মিলে। সুতরাং প্রথম কমান্ডটি হ'ল:

Ç=ü-        " On every line not containing an '=' or an '-' (e.g. inputs '/', '+', and 'x'):
    /Àé     "   Insert *n* spaces
        X   "   Delete one of them

নিম্নলিখিত কমান্ডটি ইনপুট '=' এবং '-' এর জন্য। এই দুটি সুবিধামত সহজ এবং অনুরূপ। এই আদেশের পরে, আমাদের আর কোনও প্রসেসিংয়ের দরকার নেই -

ç^Ó         " On every line that starts with non-whitespace (e.g. every line not affected by our previous command):
   /é       "   Insert one space
            "   Move back a character
      À     "   Make *n* copies
       ä$   "   Of every character on this line

এখান থেকে আমরা প্রতিটি পৃথক সম্ভাব্য ইনপুট জন্য কিছু অতিরিক্ত কমান্ড করি। এর জন্য +:

ç+/         " On every line containing a '+':
   ÀÄ       "   Make *n* copies of this line
     M|     "   Move to the first character of the middle line
       À    "   *n* times:
        R+  "   Replace the next two characters with '+ '

সমান জন্য কমান্ড খুব সোজা। আমরা কেবল এটির সাথে সদৃশ করি Ä। এর জন্য /:

ç¯          " On every line containing a '/':
  /l        "   Move one character to the right
    ò       "   Recursively:
     h      "     Move one character to the left
      Yp    "     Make a copy of this line
        X   "     Delete one character
         ò  "   End loop (implicit)

শেষটি সবচেয়ে জটিল। এটি মূলত এই উত্তরের একটি বন্দর ।

çx              " On every line containing a 'x':
  /rx           "   Replace the first character with an 'x'
     ò          "   Recursively:
      l         "     Move one char to the right
       3Ä       "     Make 3 copies of this line
         j      "     Move down one line
          x     "     Delete one char
           l    "     Move one char to the right
            rx  "     Replace this char with an 'x'

তাই কি একাধিক লাইন ব্যবহার করা হয়?
কনর ও'ব্রায়েন

@ কনরোব্রায়েন হ্যাঁ çকমান্ড (সেইসাথে অনুসন্ধান এবং প্রতিস্থাপন, /এবং ?) তেজ এর কমান্ড লাইন, আপনি আসলে কমান্ড চালানোর জন্য এন্টার করতে হবে যেখানে সব অনুকরণ অংশ
DJMcMayhem

13

05AB1E , 81 76 74 73 70 69 68 65 64 62 60 59 57 56 বাইট

বর্তমানে ভি উত্তর নিয়ে যুদ্ধে রয়েছে । আমি আপনার জন্য আসছি ডাঃ ম্যাকময়েলেক্স: পি।

এছাড়াও যুদ্ধে সঙ্গে পিপ উত্তর । আমি আপনাকে মিঃ ডিএলসকে দেখছি।


কোড:

Ç6&"¹s<ú.s.Bívy¹'xQiÂðñ}, ¹×S)»¹'=Qƒ= ;ƒ¹})D¦»»Rû.c"#è.V

বা আরও পঠনযোগ্য আকারে:

  Ç6&
"¹s<ú.s.Bívy¹'xQiÂðñ},
 ¹×S)»¹'=Qƒ=
 ;ƒ¹})D¦»»Rû.c"
#è.V

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


1
এখানে আমরা আবার যেতে ...: পি
DJMcMayhem

1
@ DRMcMoylex হা হা হা, ভাল পুরানো সময় :)।
আদনান

30
আরও পঠনযোগ্য ... সম্পূর্ণ ...
অলিভার নি

1
"পাঠযোগ্য" এর প্রদত্ত সংজ্ঞার জন্য।
ম্যাট লেইস


7

পাইথন 3, 304 283 278 বাইট

যথেষ্ট সহজ, কেবল চরগুলির একটি ম্যাট্রিক্স তৈরি করে এবং এটি কোনটির উপর নির্ভর করে বিভিন্ন ক্রিয়াকলাপ প্রয়োগ করে। =এবং -স্পেস trailing যদি যে খুব খারাপ নয়।

সম্পাদনা: আপনার পরামর্শের জন্য @ শেবাং এবং @ রডকে ধন্যবাদ যা 21 বাইট সাশ্রয় করে!

EDIT2: 5 বাইট সংরক্ষণের জন্য @ আর্টিরকে ধন্যবাদ!

t,s=input().split()
s=int(s)
r=range(s)
b=[[' ']*s for x in r]
exec(['for x in r:b[s//2][x]=b[x][s//2]=t','b=[t*s]'+'*2'*(t=='='),'for x in r:b[x][s-x-1]='+'b[x][x]='*(t=='x')+'t'][(t>'+')+(t in'x/')])
if t in'-=+':b=[[x+' 'for x in l]for l in b]
print(*map(''.join,b),sep='\n')

আপনি if'-'==tকন্ডিশন লাইনটি সরিয়ে এবং তার উপরে একটিটি প্রতিস্থাপন করে 8 টি বাইট সংরক্ষণ করতে পারেন if t in'=-':b=[[t+' ']*s]*(2*(t>'-'))(আমার মনে হয়)।
কেদে

আপনি তালিকার ভিতরে ফাংশনগুলি মোড়ানো করতে পারেন এবং এক্সিকিউটি ব্যবহার করে চালাতে পারেন: exec(['+ block','/ block','x block','= block','- block']['+/x=-'.find(t)])18
রড

হ্যাঁ, পিছনে স্থান / নিউলাইনগুলি গ্রহণযোগ্য।
ইয়ডল

প্রথম লাইনের জন্য, করুন .split()(কোনও স্থান সাদা বাক্সে বিভক্ত নয়)। Line লাইনে, আপনি একটি স্থান ( b=[[x+' 'for) মিস করেছেন । আপনি print(*map(''.join,b),sep='\n')1 টি কম বাইটের জন্য শেষ লাইনটি তৈরি করতে পারেন ।
আর্টিয়ার

7

জাভাস্ক্রিপ্ট (ES6), 238 225 215 202 196 বাইট

(c,n)=>[...Array(i=n*(c=="="?4:c+1-1?2:c<"-"?n+n:n+1))].map(_=>--i%(n+(c=='/'|c>'w'||n))?c>'w'?i%n&&~-i%(n+2)?" ":c:c<'-'?i%(n*2)-n&&(~i&1|(n/2^i/n/2))?" ":c:c=="/"?i%n?" ":c:i%2?c:" ":`
`).join``

সম্ভবত গল্ফ করা যেতে পারে, তবে এটি একটি শুরু।


6

স্কালা, 275 বাইট

(i,c)=>if(c<44){val b=(" "*(i-1)+"+\n")*((i-1)/2)
b+"+ "*i+"\n"+b}else
if(c<46)"- "*i else
if(c<48)i-1 to(0,-1)map(" "*_+"/\n")mkString else
if(c<62)"= "*i+"\n"+"= "*i
else{val a=0 to i/2-1 map(x=>" "*x+"x"+" "*((i/2-x)*2-1)+"x"+" "*x+"\n")mkString;a+" "*(i/2)+"x"+a.reverse}

ব্যবহার:

val f:((Int,Char)=>String)=...
print(f(10, '/'))

ব্যাখ্যা:

চিত্রটি উত্পন্ন করার সঠিক উপায়টি চয়ন করার জন্য চরের আসকি মানের জন্য কোড পরীক্ষা করে। প্রশ্নে অপারেটরদের আসকি মানগুলি হ'ল: ('+' -> 43), ('-' ->45), ('/' -> 47), ('=' -> 61), ('x' -> 120)

(i,c)=>                              //define a function
  if(c<44){                            //if c is a plus
    val b=(" "*(i-1)+"+\n")*((i-1)/2)    //define the top/bottom part b as (i-1)/2 times (i-1) spaces, a plus sign and a newlineine
    b+"+ "*i+"\n"+b                      //return b, i times a plus and a space, a newline and b
  }else if(c<46)                       //if c is a '-'
    "- "*i                               //return "- " repeated i times
  else if(c<48)                        //if c is a '/'
    i-1 to(0,-1)                         //create a range from i-1 to 0 in steps of -1
    map(" "*_+"/\n")                     //map each number to that number of spaces plus a "/" and a newline
    mkString                             //join them together
  else if(c<62)                        //if c is '='
    "= "*i+"\n"+"= "*i                   //return "= " repeated i times, a newline and "= " repeated i times again
  else{                                //if c if 'x'
    val a=                               //define a, which will be the top part, as...
      0 to i/2-1                         //a range from 0 to i/2-1
      map(n=>                            //map each number n to
        " "*n                              //n spaces
        +"x"                               //plus an "x"
        +" "*((i/2-n)*2-1)                 //plus ((i/2)-n)*2-1 spaces
        +"x"                               //plus an "x"
        +" "*n                             //plus n spaces
        +"\n"                              //and a newline
      )mkString;                         //join them
    a+" "*(i/2)+"x"+a.reverse          //return a, i/2 spaces, "x" and the reverse of a 
  }

5

জাভাস্ক্রিপ্ট (ES6), 156 বাইট

(c,n)=>[...Array(n--)].map((_,i,a)=>a.map((_,j)=>({'/':a=i+j-n,x:a&&i-j,'-':a=i+i-n,'+':a&&j+j-n,'=':a+2&&a-2}[c]?' ':c)).join(c=='='|c<'/'?' ':'')).join`\n`

যেখানে \nআক্ষরিক নিউলাইন চরিত্রের প্রতিনিধিত্ব করে।


ফায়ারফক্স 49-এ, SyntaxError: invalid property idএটি বর্তমানে লেখা হিসাবে আমি পেয়েছি , কিন্তু স্ল্যাশের চারপাশে ব্যাকটিকগুলি পরিবর্তন করে অ্যাস্ট্রোফেসে পরিণত করা ঠিক করেছে। (কেন আপনার এখানে
অ্যাপ্রোথ্রফসের

এছাড়াও, জন্য আউটপুট +, -এবং =চ্যালেঞ্জ কল চেয়ে বর্ণন বিভিন্ন: "অনুভূমিক অংশ উল্লম্ব / অনুভূমিক দূরত্ব পার্থক্য অফসেট অক্ষরের মধ্যে স্পেস থাকতে হবে।"
ইটিএইচ প্রডাকশনস

@ ইথ প্রডাকশন ক) টাইপো খ) দুঃখিত, আমি এটিকে অগ্রাহ্য করেছি, এটি পরে ঠিক হয়ে যাবে।
নিল

এটি হাস্যকর হলেও কম। আমি আশা করি এটি ঠিক করার ফলে খুব বেশি বাইট যুক্ত হবে না।
ইটিএইচ প্রডাকশনস

ধন্যবাদ ETH প্রডাকশন ধন্যবাদ। আমি মনে করি এটি 19 বাইটের ব্যয়ে হয়।
নিল

4

ডায়ালগ এপিএল , 91 86 বাইট

প্রয়োজন ⎕IO←0, যা অনেক সিস্টেমে ডিফল্ট। বাম আর্গুমেন্ট হিসাবে n গ্রহণ করে এবং + - × ÷ = এর মধ্যে একটিকে সঠিক আর্গুমেন্ট হিসাবে গ্রহণ করে।

{s←⌈⍎⍕32
t' '
d←⌽∘.=⍨⍺
s2 6:t[d∨⌽d6=s]
5=s:t[↑,/2↑¨∨/¨(⌊⍺÷2)=⍳⍺ ⍺]
(2-s)(2×⍺)⍴t}

ব্যাখ্যা

{
    s     3  2              calculate ceil(3 f 2), where f is the given symbol
    t  ' '                     create a string with a space before the symbol
    d   ∘.=⍨                  Boolean \ diagonal
    s  2 6: t[d   d  6 = s]  if ÷ or × index t with one or both diagonals
 find coordinates that are in the middle of at least one dimension
 pad with zeros for spacing
 use that to index into t
    5 = s: t[  ,/ 2↑¨ ∨/¨ (⌊  ÷ 2) =   ⍺]
 - or =:
    (2 - s) (2 × ⍺)  t        one or two rows of double-spaced symbols
}

3

গণিত, 191 বাইট

e=#~Mod~2==1&;StringRiffle[Normal@SparseArray[{a_,b_}/;(a+b==d+1||a==b)[e@b&&a<3,,e@b&&(a==⌈d/2⌉||b==d),,e@b&&a<2,,a+b==d+1][[Last@ToCharacterCode@#~Mod~10]]:>#,{d=#2,2d-1}," "],"
"," "]&

বেনামে ফাংশন। স্ট্রিং এবং একটি সংখ্যা ইনপুট হিসাবে নেয় এবং আউটপুট হিসাবে একটি স্ট্রিং প্রদান করে। এখন পর্যন্ত খুব ছোট নয়, তবে লেখার জন্য এখনও মজা।


3

সি, 396 বাইট

#define p(x) printf(x);
i,j,k,m;f(char s,int n){i=k=0;if(s==45)for(;i<n;++i)p("- ")m=n/2;if(s==43)for(;i<n;++i)for(j=0;j<=m;++j)if(i-m)p(j-m?"  ":"+\n")else{for(;k<n;++k)p("+ ")p("\n")j+=m;}if(s==61)for(;i<2;++i){for(k=0;k<n;++k)p("= ")p("\n")}j=n;if(s==47)for(;i<n;++i){--j;for(k=0;k<j;++k)p(" ")p("/\n")}if(s==120)for(;i<n;++i){k=m-abs(m-i);for(j=0;j<n-k;++j)p(j-k?" ":"x")p(i-m?"\bx\n":"\n")}}

সাথে কল করুন:

int main()
{
   f('x', 5);
   return 0;
}

2

এসওএমএল , 104 100 বাইট (প্রতিদ্বন্দ্বী)

    Cd³³b»E +=?ce*d+e{t}bd*Oe{t}} ==?b*tt} -=?b*t} /=?bc*b{j:d+p}} x=?"”cb*e{jj⁴⁴d;d+++tGG;c+;}XOdoe{O

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


2

পিএইচপি, 306 292 281 282 281 275 270 বাইট

$r=str_pad("",2*$n=$argv[2],($c=$argv[1])." ")."\n";if(",">$c)$r=($m=str_repeat(str_pad($c,$n," ",0)."\n",$n/2))."$r$m";if(9<$c)$r.=$r;if(w<$c)for($r=$c;$i<$n;$r[$i*(2+$n)]=$r[++$i*$n-1]=x)$r[$i*$n+$i+$n]="\n";if("/"==$c)for($r=$s="";$i++<$n;$s.=" ")$r="$s/\n$r";echo$r;

ওহ এটি বিশাল ... আরও গল্ফ করা দরকার।
আমি শারীরিক লাইনব্রেক সহ 4 বাইট বা একটি বাইটে "\ n" ভেরিয়েবলের সাহায্যে সঞ্চয় করতে পারি।


1
"+" জন্য চমৎকার, আমি মনে করি আপনার উচ্চতাটি মিলবে এবং সর্বদা 3 নয় Also এছাড়াও আপনার / কেস / ব্রেকের পরিবর্তে যদি () ব্যবহার করতে পারেন তবে আরও গল্ফ ব্যবহার করা উচিত;
ক্রিপ্টো

2

সি #, 744 বাইট

এটি 1 মিলিয়ন চরিত্রের মতো দীর্ঘ বলে মনে হয়, তবে আমি যত্ন করি না, আমি এতটাই খুশি যে আমি এটিকে সমাধান করেছি ...

Golfed:

string A(string s,int n){string O="";Func<string,int,string>R=(a,b)=>{return string.Join("",Enumerable.Repeat(a,b))+"\r\n";};switch(s){case"+":for(int i=0;i<n;i++){if(i==n/2){O+=R("+",n);}else{O+="+".PadLeft(n-n/2,' ').PadRight(n-n/2,' ')+"\r\n";}}return O;case"=":return R("=",n)+R("=",n);case "-":return R("-",n);case "/":for(int i=n;i>0;i--){O+="/".PadLeft(i)+"\r\n";}return O;case "x":int x=0;string[]r=new string[n];for(int i=n;i>0;i--){if(n-x-x<0){O+="x".PadLeft(x+1)+"\r\n";break;}string row=string.Join("",Enumerable.Repeat(" ",x))+"x"+string.Join("",Enumerable.Repeat(" ",n-x-x))+"x"+"\r\n";O+=row;x++;r[x]=row;if(i==n/2)break;}for(int i=r.Length-1;i>0;i--){if(string.IsNullOrEmpty(r[i]))continue;O+=r[i];}return O;default:return "";}}

Ungolfed:

public string A(string s, int n)
{
  string O = "";

  Func<string, int, string> R = (a, b) =>
  {
    return string.Join("", Enumerable.Repeat(a, b)) + "\r\n";
  };

  switch (s)
  {
    case "+":
      for (int i = 0; i < n; i++)
      {
        if (i == n / 2)
        {
          O += R("+", n);
        }
        else
        {
          O += "+".PadLeft(n - n / 2, ' ').PadRight(n - n / 2, ' ') + "\r\n";
        }
      }
      return O;
    case "=":
      return R("=", n) + R("=", n);
    case "-":
      return R("-", n);
    case "/":
      for (int i = n; i > 0; i--)
      {
        O += "/".PadLeft(i) + "\r\n";
      }
      return O;
    case "x":
      int x = 0;
      string[] r = new string[n];
      for (int i = n; i > 0; i--)
      {
        if (n - x - x < 0)
        {
          O += "x".PadLeft(x + 1) + "\r\n";
          break;
        }
        string row = string.Join("", Enumerable.Repeat(" ", x))
          + "x"
          + string.Join("", Enumerable.Repeat(" ", n - x - x)) + "x" + "\r\n";
        O += row;
        x++;
        r[x] = row;
        if (i == n / 2)
          break;
      }
      for (int i = r.Length - 1; i > 0; i--)
      {
        if (string.IsNullOrEmpty(r[i]))
          continue;
        O += r[i];
      }
      return O;
    default:
      return "";
  }
}

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

+: 3, 5, 7, 9, 11
/: 7, 8, 9, 10
-: 3, 4, 5, 6
=: 3, 4, 5, 6, 7
x: 5, 7, 9, 11

এখানে পেস্ট এবং ফর্ম্যাট করার জন্য খুব বেশি, আমি একটি পেস্টবিন তৈরি করেছি:

Pastebin


দয়া করে এটি গল্ফ করুন এবং একটি বাইট গণনা সরবরাহ করুন।
mbomb007

2

সি, 331 বাইট

i,j;f(o,n){if(47==o)for(i=n;i;puts("")){for(j=i--;j--;putchar(j?32:o)){}}
if(43==o)for(i=n;i--;puts("")){for(j=n;j--;printf(i==n/2||!j?"+ ":" ")){}}
if(45==o)for(i=n;i--;putchar(o)){}
if(61==o)for(i=3;i--;puts("")){for(j=n;j--;putchar(i&1?32:o)){}}
if(120==o)for(i=n;i;puts("")){for(j=0;j++<n;putchar(j==i||j==n-i+1?o:32)){}i--;}}

অপারেটরটিকে ASCII কোড হিসাবে পাস করা হয় oএবং অক্ষরটি এতে গণনা করা হয় n। আমি কেবল আনুভূমিকভাবে পরপর অক্ষরের মধ্যে প্লাস চিহ্নে ফাঁকা স্থান যুক্ত করেছি, যেহেতু এটিই কেবলমাত্র আউটপুটটি বিকৃত হত যদি আমি না করতাম এবং টাস্কে এটি কেবল "উচিত" বলেছিল। আমি গণনা করা দুটি নেস্টেড লুপ ব্যবহার করি ( -যেখানে কেবল আমার কেবল একটি লাইনের প্রয়োজন আছে তা বাদে )।

= তিনটি লাইন, তাদের মধ্যে একটি খালি, সরাসরি এগিয়ে

+printfস্পেস কারণে ব্যবহার

- সোজা এগিয়ে

/ অভ্যন্তরীণ লুপ মুদ্রণটি শূন্যে এবং বাইরের লুপের কাউন্টারে শুরু করুন

xবাইরের লুপের কাউন্টারে অভ্যন্তরীণ লুপ প্রিন্ট এবং এটির "বিপরীতমুখী" রাখুন n-i। এখনও আমি কেন এখানে বাই এক করছি তা দেখার প্রয়োজন।

নমুনা কল:

#include <stdio.h>
/*  =       61
    +       43
    -       45
    /       47
    Space   32
    x       120
*/
int main(int argc, char **argv){
    printf("%s\n%s\n",argv[1], argv[2]);
    f(*argv[1],strtol(argv[2],NULL,10));
}

1

লুয়া, 402 344 312 বাইট

312:

r,p,b,x=string.rep,print,' ','x'function d(s,n)h,l=(n+1)/2,s..b;e=r(l,n)if s=='-'then p(e)elseif s=='='then p(e)p(e)else for f=1,n do p(s=='/'and(r(b,n-f)..s)or s=='+'and(f~=h and r(' ',n-1)..'+'or r('+ ',n))or f<h and r(b,f-1)..x..r(b,n-2*f)..x or f>h and r(b,n-f)..x..r(b,2*f-2-n)..x or r(b,f-1)..x)end end end

344:

r,p,b,x=string.rep,print,' ','x'function d(s,n)h,l=(n+1)/2,s..b;e=r(l,n)if s=='-'then p(e)elseif s=='='then p(e)p(e)else for f=1,n do if s=='/'then p(r(b,n-f)..s)elseif s=='+'then p(f~=h and r(' ',n-1)..'+'or r('+ ',n))elseif s=='x'then p(f<h and r(b,f-1)..x..r(b,n-2*f)..x or f>h and r(b,n-f)..x..r(b,2*f-2-n)..x or r(b,f-1)..x)end end end end

402:

r,p,b,x=string.rep,print,' ','x'function d(s,n)h=(n+1)/2;if s=='-'then p(r(s..b,n))end;if s=='='then p(r(s..b,n))p(r(s..b,n))end;if s=='/'then for i=1,n do p(r(b,n-i)..s)end end;if s=='+'then for i=1,n do p(i~=h and r(' ',n-1)..'+'or r('+ ',n))end end;if s=='x'then for i=1,n do if i<h then p(r(b,i-1)..x..r(b,n-2*i)..x)elseif i>h then p(r(b,n-i)..x..r(b,-n+2*i-2)..x)else p(r(b,i-1)..x)end end end end

90 টি অক্ষর হ্রাস পেয়েছে এবং প্রসারিত হওয়ার পরেও তা দেখতে বেদনাদায়ক। : |


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