সব মিলিয়ে এটি ঠিক, আহ, কোড গল্ফের আর একটি কৌশল


64

এই চ্যালেঞ্জের উদ্দেশ্য হ'ল রক ব্যান্ড পিঙ্ক ফ্লয়েডের দুর্দান্ত অ্যালবামের কভারটির একটি ASCII সংস্করণ উত্পাদন করা ।

ইটের জংশনগুলি অক্ষর দ্বারা তৈরি _এবং |। ইটগুলির জংশনগুলি বাদ দিয়ে প্রস্থ 7 এবং উচ্চতা 2 টি অক্ষর রয়েছে। সুতরাং জংশন সহ বেসিক ইউনিটটি হ'ল:

_________
|       |
|       |
_________

প্রতিটি সারি ইটের পূর্বের সারির সাথে অর্ধ ইটের প্রস্থ (4 টি অক্ষর) দ্বারা অফসেট করা হয় :

________________________________________
  |       |       |       |       |     
  |       |       |       |       |     
________________________________________
      |       |       |       |       | 
      |       |       |       |       | 
________________________________________
  |       |       |       |       |     
  |       |       |       |       |     

দেয়ালটি নিম্নরূপে প্যারামিটারাইজড । সমস্ত প্যারামিটারগুলি জংশন সহ চরগুলিতে পরিমাপ করা হয়:

  1. প্রথম সারির অনুভূমিক অফসেটF ,। এটি বাম মার্জিন এবং উপরের সারির প্রথম উল্লম্ব সংযোগের মধ্যবর্তী দূরত্ব। (সারিগুলির মধ্যে অর্ধ ইটের আপেক্ষিক অফসেট মনে রাখবেন)। তার সম্ভাব্য মান হয় 0, 1, ..., 7
  2. মোট প্রস্থ , W। এটি জংশন অন্তর্ভুক্ত। এর মান একটি ধনাত্মক পূর্ণসংখ্যা।
  3. মোট উচ্চতা , H। এটি জংশন অন্তর্ভুক্ত। এর মান একটি ধনাত্মক পূর্ণসংখ্যা।

প্রাচীরের শীর্ষটি সর্বদা একটি সারির শীর্ষের সাথে মিলে যায়। নীচে র‌্যাগ করা যেতে পারে (যদি মোট উচ্চতা একাধিক না হয় 3)। উদাহরণস্বরূপ, এখানে আউটপুট আছে জন্য 6, 44, 11:

____________________________________________
      |       |       |       |       |     
      |       |       |       |       |     
____________________________________________
  |       |       |       |       |       |     
  |       |       |       |       |       |     
____________________________________________
      |       |       |       |       |     
      |       |       |       |       |     
____________________________________________
  |       |       |       |       |       |     

এবং পরামিতিগুলির একটি চাক্ষুষ ব্যাখ্যা:

          F=6
         ......   
     .   ____________________________________________
     .         |       |       |       |       |    
     .         |       |       |       |       |     
     .   ____________________________________________
     .     |       |       |       |       |       | 
H=11 .     |       |       |       |       |       |      
     .   ____________________________________________
     .         |       |       |       |       |     
     .         |       |       |       |       |     
     .   ____________________________________________
     .     |       |       |       |       |       |      

         ............................................
                             W=44

অতিরিক্ত বিধি

আপনি কোনও প্রোগ্রাম বা একটি ফাংশন সরবরাহ করতে পারেন।

ইনপুট ফর্ম্যাটটি যথারীতি নমনীয়। আউটপুট STDOUT এর মাধ্যমে হতে পারে বা কোনও ফাংশন দ্বারা ফেরত যুক্তি। এই ক্ষেত্রে এটি নিউলাইন বা স্ট্রিংগুলির একটি অ্যারে সহ একটি স্ট্রিং হতে পারে।

ট্রেলিং স্পেস বা নিউলাইনগুলি অনুমোদিত।

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

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

ইনপুটগুলি উপরে বর্ণিত ক্রমের মধ্যে রয়েছে, এটি: প্রথম সারির অনুভূমিক অফসেট, মোট প্রস্থ, মোট উচ্চতা।

6, 44, 11:
____________________________________________
      |       |       |       |       |     
      |       |       |       |       |     
____________________________________________
  |       |       |       |       |       | 
  |       |       |       |       |       | 
____________________________________________
      |       |       |       |       |     
      |       |       |       |       |     
____________________________________________
  |       |       |       |       |       |     


2, 20, 10:
____________________
  |       |       | 
  |       |       | 
____________________
      |       |     
      |       |     
____________________
  |       |       | 
  |       |       | 
____________________


1, 1, 1:
_


1, 2, 3:
__
 |
 |


3, 80, 21:
________________________________________________________________________________
   |       |       |       |       |       |       |       |       |       |    
   |       |       |       |       |       |       |       |       |       |    
________________________________________________________________________________
       |       |       |       |       |       |       |       |       |       |
       |       |       |       |       |       |       |       |       |       |
________________________________________________________________________________
   |       |       |       |       |       |       |       |       |       |    
   |       |       |       |       |       |       |       |       |       |    
________________________________________________________________________________
       |       |       |       |       |       |       |       |       |       |
       |       |       |       |       |       |       |       |       |       |
________________________________________________________________________________
   |       |       |       |       |       |       |       |       |       |    
   |       |       |       |       |       |       |       |       |       |    
________________________________________________________________________________
       |       |       |       |       |       |       |       |       |       |
       |       |       |       |       |       |       |       |       |       |
________________________________________________________________________________
   |       |       |       |       |       |       |       |       |       |    
   |       |       |       |       |       |       |       |       |       |    

34
আপনি আমাকে এইচএনকি
রোহান ঝুনঝুনওয়ালা

2
@ রোহানঝুনঝুনওয়ালা ডান সম্পর্কে শোনায়
ইনসান

4
গানের সিলেবলের সংখ্যার সাথে মিলে যাবার জন্য আপনাকে ধন্যবাদ ... আপনি বিশ্বাস করবেন না যে কত লোক কোনও গান স্পিন-অফ করে সিলেবিকেশনটি ভুল করার চেষ্টা করে, এটি আমাকে বাদাম দেয়!
ক্রিস সাইরেফাইস

1
@ ক্রিসক্রাইফেস হাহাহা, ধন্যবাদ! শিরোনাম এই চ্যালেঞ্জের একটি গুরুত্বপূর্ণ অংশ ছিল
লুইস মেন্ডো

উত্তর:


17

পাইথ, 43 27 বাইট

আমার এটি ভারীভাবে গল্ফ করা দরকার ... স্কোরটি খুব লজ্জাজনক।

AQVE<*H?%N3X*8d+G*4/N3\|\_H

ইতিমধ্যে এটি অনলাইনে চেষ্টা করুন।

ছক পূরণ করা

6,44
11

আউটপুট ফরমেট

____________________________________________
      |       |       |       |       |     
      |       |       |       |       |     
____________________________________________
  |       |       |       |       |       | 
  |       |       |       |       |       | 
____________________________________________
      |       |       |       |       |     
      |       |       |       |       |     
____________________________________________
  |       |       |       |       |       | 

ব্যাখ্যা

AQVE<*H?%N3X*8d+G*4/N3\|\_H   First two inputs as list in Q,
                              third input as E.

AQ                            Assign G to the first item in Q
                              and H to the second item in Q.
  VE                          For N from 0 to E-1:
                   /N3            N floor-div 3.
                                    if N gives a remainder of 3 or 4 or 5
                                    when divided by 6, this will be odd;
                                    otherwise, this will be even.
                 *4               Multiply by 4.
                                    if the above is odd, this will leave
                                    a remainder of 4 when divided by 8;
                                    otherwise, the remainder would be 0.
               +G                 Add G (as an offset).
           X*8d       \|          In the string "        " (*8d),
                                  replace (X) the character with the
                                  index above with "|" (modular indexing,
                                  hence the manipulation above).
       ?%N3             \_        If N%3 is non-zero, use the above;
                                  otherwise, use "_".
     *H                           The above repeated H times.
    <                     H       Take the first H characters of above.
                                  Implicitly print with newline.

দেখে মনে হচ্ছে আপনি win
wordsforthewise

30

সি, 86 85 83 82 বাইট

3 বাইট লিনকে ধন্যবাদ রক্ষা করেছে।
চার্লি ধন্যবাদ 1 বাইট সংরক্ষণ করা।

i;f(o,w,h){++w;for(i=0;++i<w*h;)putchar(i%w?i/w%3?i%w+i/w/3*4+~o&7?32:124:95:10);}

1
for(i=0;++i<w*h;)বা যদি iস্থানীয় করা হয় (প্যারাম ট্রিক):for(;++i<w*h;)
চার্লি

i;দ্বারা প্রতিস্থাপন i=1;এবং লুপ জন্য আরও একটি বাইট সংরক্ষণ করুন।
xryl669

for(i=1;i<w*h;++i)-> for(i=0;++i<w*h;)1 বাঁচায়
ইয়ে 295

@ xryl669 এটি বৈধ নয়, ফাংশন অবশ্যই পুনরায় ব্যবহারযোগ্য হবে।
অরলপ

@ Yay295 আমি চার্লি এর সাথে ক্রেডিট করেছি, যেহেতু তিনি এটি 7 ঘন্টা আগে পোস্ট করেছিলেন।
orlp


13

পার্ল, 63 বাইট

#!perl -nl
$y+=print+map$y%3?$_++-$`&7?$":'|':_,($y%6&4)x$&for/ \d+/..$'

শেবাংকে 2 হিসাবে গণনা করা, স্ট্যান্ডিন থেকে সাদা অংশ আলাদা করে ইনপুট নেওয়া হয়।

নমুনা ব্যবহার

$ echo 2 20 10 | perl bricks.pl
____________________
  |       |       |
  |       |       |
____________________
      |       |
      |       |
____________________
  |       |       |
  |       |       |
____________________

11

হাস্কেল, 83 বাইট

q s="_":[s,s]
(f!w)h=take h$cycle$take w.drop(7-f).cycle<$>q"       |"++q"   |    "

এটি একটি বার্ষিক ইনফিক্স ফাংশন সংজ্ঞায়িত করে !যা স্ট্রিংগুলির একটি তালিকা প্রদান করে। ব্যবহারের উদাহরণ:

*Main> putStrLn $ unlines $ (3!14) 7
______________
   |       |  
   |       |  
______________
       |      
       |      
______________

কিভাবে এটা কাজ করে:

            q"       |"++q"   |    "  -- build a list of 6 strings
                                      --   1:     "_"
                                      --   2:     "       |"
                                      --   3:     "       |"
                                      --   4:     "_"
                                      --   5:     "   |    "
                                      --   6:     "   |    "
         <$>                          -- for each of the strings
     take w.drop(7-f).cycle           -- repeat infinitely, drop the first 7-f chars
                                      --    and take the next w chars
  cycle                               -- infinitely repeat the resulting list
take h                                -- and take the first h elements

1
এর মতো উত্তরগুলি আমাকে এই ভাষাটি শিখতে চায়।
গিটারপিকার 18

3
সমস্যার বিবরণ পড়ার সময় আমি হাস্কেলের কথা ভেবেছিলাম। "অসীম পুনরাবৃত্তি" হ'ল একটি সত্যই ঝরঝরে বৈশিষ্ট্য।
ডিএলসাস

10

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

g=
(f,w,h)=>[...Array(h)].map((_,i)=>(i%3?`       |`:`_`).repeat(w+7).substr(f^7^i%6&4,w)).join`
`
;
<div onchange=o.textContent=g(f.value,w.value,+h.value)><input id=f type=number min=0 max=7 placeholder=Offset><input id=w type=number min=0 placeholder=Width><input id=h type=number min=0 placeholder=Height></div><pre id=o>

ব্যাখ্যা: পুনরাবৃত্তি করা 7 টি স্পেস প্লাস |প্যাটার্ন বা কেবল পুনরাবৃত্তি করা একটিগুলির একটি স্ট্রিং তৈরি করে _তবে wপ্রতিটি সারির জন্য প্রয়োজনীয় অক্ষরগুলি বের করতে সক্ষম হতে কমপক্ষে দীর্ঘ । প্রথম তিনটি সারি পজিশনে শুরু হয় f^7এবং তারপরে পরের তিনটি সারি পজিশনে শুরু হয় f^3, সুতরাং আমি প্রতি তৃতীয় সারিতে বিট 2 টগলf করে এটির জন্য প্রতিটি ব্লকের 6 টির শেষ দুটি সারিটির বিপরীতে বিট 2 ব্যবহার করে 1 টি সঞ্চয় করব বাইট।


7

এমএটিএল, 42 36 33 বাইট

:-Q'_ | |'[DClCl]Y"8et4YShwi:3$)!

ইনপুট ফরম্যাট হল: nCols, offset,nRows

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

এখানে দৃষ্টিভঙ্গিটি হ'ল আমরা একটি "টেম্পলেট" সেটআপ করি যা আমরা তারপরে সারি সূচকগুলি ( [1 2 ... nRows]) এবং প্রথম ইনপুট ( [1 2 ... nCols] - shift) দ্বারা স্থানান্তরিত কলাম সূচকগুলি ব্যবহার করে সূচীকরণ করি । এমএটিএল-র মডুলার ইনডেক্সিংয়ের জন্য ধন্যবাদ, এটি স্বয়ংক্রিয়ভাবে একটি টাইল আউটপুট তৈরি করবে। পার্শ্ব-নোট হিসাবে, কিছু জায়গা বাঁচাতে, প্রযুক্তিগতভাবে আমি টেম্পলেটটির ট্রান্সপোজড সংস্করণ দিয়ে কাজ করি এবং তারপরে !শেষে একটি ট্রান্সপোজ ( ) নিয়ে যাই ।

টেমপ্লেটটি হ'ল:

________
       |
       |
________
  |     
  |     

1
প্যাটার্নটি তৈরি করতে রান-লেংথ কোডিংয়ের দুর্দান্ত ব্যবহার
লুইস মেন্ডো

6

পাইথন 2, 93 88 বাইট

২ য় ইনডেন্টেশন স্তরটি হ'ল লিকি নুন এবং কিছু নিজস্ব পরিবর্তনগুলির জন্য কিছু বাইট সংরক্ষণ করা, এছাড়াও এখন অফসেটটি সঠিক করুন:

def f(F,W,H):
 for h in range(H):print["_"*W,((("|"+7*" ")*W)[8-F+h%6/3*4:])[:W]][h%3>0]

পূর্ববর্তী কোড:

def f(F,W,H,x="|"+7*" "):
 for h in range(H):
    print ["_"*W,(x[F+4*(h%6>3):]+x*W)[:W]][h%3>0]

নামবিহীন ল্যাম্বদা হিসাবে একই দৈর্ঘ্য:

lambda F,W,H,x="|"+7*" ":"\n".join(["_"*W,(x[F+4*(h%6>3):]+x*W)[:W]][h%3>0]for h in range(H))

F,W,H=input()
লিকি নুন

পরে সাদা স্থানটি সরিয়ে দিনprint
লিকি নুন

এর পরিবর্তে h/3%2*4বা এর h%6/3*4পরিবর্তে4*(h%6>3)
লিকি নুন

আপনার দ্বিতীয় ইন্ডেন্টেশন স্তরটির প্রয়োজন নেই। printবিবৃতিটির ঠিক একই লাইনে forবিবৃতিটি রাখুন
লিকি নুন

"| "("|"+7*" ")আমি সঠিকভাবে গণনা করি কিনা তার চেয়ে ছোট
লিকি নুন

6

কিউবাসিক, 121 109 বাইট

(কিউবি 64 তে পরীক্ষিত)

IFগাণিতিক সমতুল্য সহ আমার বক্তব্যটি গল্ফ করার জন্য @ ডিএলসকে ধন্যবাদ জানাই । এটি 12 বাইট মূল্য ছিল।

সাধারণ পদ্ধতি:

একটি সময়ে প্রতিটি কক্ষে এক মাধ্যেমে লুপ এবং তা নির্ধারণ এটি একটি হওয়া উচিত _, অথবা |তার অবস্থান উপর নির্ভর করে। MODবিবৃতি এবং বুলিয়ান যুক্তি ইটের সীমানা নির্ধারণ করতে ব্যবহৃত হয় এবং কতগুলি ইট আটকে রাখা যায় to

কোড:

INPUT F,W,H
FOR y=0TO H-1:FOR x=0TO W-1
?CHR$((y MOD 3>0)*(((x-(y MOD 6>3)*4)MOD 8=F)*92+63)+95);
NEXT:?:NEXT

ব্যবহার নোট:

কিউব্যাসিক প্রত্যাশা করে যে ইনপুটটি কমা দ্বারা পৃথক করা হবে।


1
আরও বেশি বন্ধনীর পরিবর্তে গণিত ব্যবহার করা IF/ THENআরও বেশি বন্ধনী যুক্ত করা হয়েছে তবে 12 বাইট সংরক্ষণ করে:?CHR$((y MOD 3>0)*(((x-(y MOD 6>3)*4)MOD 8=F)*92+63)+95);
ডিএলকাস

মন্তব্যের জন্য ধন্যবাদ. আমার মাথার পিছনে আমি গণিত অন্বেষণের কথা বিবেচনা করেছি, কিন্তু তা করি নি। সাম্প্রতিক জমা দেওয়ার ক্ষেত্রে একটি চিত্র রঙ করার জন্য আমি এর অনুরূপ কিছু করলাম , তবে আমি প্রয়োগের প্রয়োগটির কোনও এমওডি অপারেটর নেই।
গিটারপিকারটি

5

জাভা, 149 , 147 , 146 , 143 বাইট

Golfed:

String f(int o,int w,int h){String s="";for(int y=0,x;y<h;++y){for(x=0;x<w;++x){s+=y%3>0?(x-o+(y-1)/3%2*4)%8==0?'|':' ':'_';}s+='\n';}return s;}

Ungolfed:

public class AllInAllItsJustUhAnotherTrickInCodeGolf {

  public static void main(String[] args) {
    int offset = 6;
    int width = 44;
    int height = 11;
    System.out.println(new AllInAllItsJustUhAnotherTrickInCodeGolf()
        .f(offset, width, height));
  }

  // Begin golf
  String f(int o, int w, int h) {
    String s = "";
    for (int y = 0, x; y < h; ++y) {
      for (x = 0; x < w; ++x) {
        s += y % 3 > 0 ? (x - o + (y - 1) / 3 % 2 * 4) % 8 == 0 ? '|' : ' ' : '_';
      }
      s += '\n';
    }
    return s;
  }
  // End golf

}

1
সম্ভবত আপনি > 0দুটি অক্ষর সংরক্ষণ করতে পারে তার সাথে তুলনা করে ত্রৈমাসীর ক্রমটি স্যুইচ করতে পারেন । এবং অবশ্যই আপনি ঘোষণাগুলি একত্রিত করতে পারেন int y=0,x

হিমায়িত দ্বারা বলা হচ্ছে , আপনি এর int আগে সরিয়ে ফেলতে xপারেন int y=0,xএবং 2 টি বাইট সংরক্ষণ করার পরিবর্তে প্রথম লুপটিতে ব্যবহার করতে পারেন । এছাড়াও, বর্তমানে আপনি এতে পরিবর্তন y%3==0করতে পারেন y%3<1। (এই আমার পক্ষে সম্ভব নয় ...%8==0থেকে ...&8<1যদিও, যেহেতু আপনার অপারেশন একটি ঋণাত্মক সংখ্যা আসতে পারে।)
কেভিন Cruijssen

কাজ ও সম্পন্ন. আপনি সঠিক, দ্বিতীয় মডিউলটি নেতিবাচক ফিরে আসতে পারে এবং এটি ডিবাগিংয়ের সময় হয়েছিল যখন আমি মূলত এই ফাংশনটি লিখেছিলাম।

1
কীভাবে করবেন নিশ্চিত নন আমরা এই মিস, কিন্তু আপনি -2 বাইট জন্য আপনার পরামিতি এ স্পেস অপসারণ করতে পারেন .. অথবা, ব্যবহার int...oপ্যারামিটার হিসাবে এবং পরিবর্তন wকরার জন্য o[1], hথেকে o[2]এবং oথেকে o[0]-3 বাইট পরিবর্তে হয়।
কেভিন ক্রুইজসেন

4

রুবি, 72 66 বাইট

->f,w,h{h.times{|i|puts i%3<1??_*w:((?|+' '*7)*w)[8-f+i%6/4*4,w]}}

ধন্যবাদ @ ভ্যালু কালি 6 বাইটের জন্য!

সরল স্ট্রিং গুণ এবং কাটা।

রুবি ২.৩.০ এ কাজ করে (আইডিয়নের সংস্করণ ২.১ সিন্টেক্স ত্রুটি ছুঁড়েছে)।


2
ব্যবহার করুন i%6/4*4পরিবর্তে (i%6>3?4:0)এবং ব্যবহার ?_পরিবর্তে '_', ?|পরিবর্তে '|'
মূল্য কালি

ধন্যবাদ. আমি ?একক চর কৌশল সম্পর্কে ভুলে গেছি , এবং "গণিত" অংশটি সত্যিই চিত্তাকর্ষক!
লাইব্রুগ

1
আমার মনে হয় ((' '*7+?|)*w)[f^7^i%6&4,w]আপনাকে দুটি বাইট বাঁচায়
নীল

আপনাকে ধন্যবাদ @ নীল। আমি কোডটি সম্পাদনা করব ... আপনার পরামর্শটি কীভাবে কাজ করে তা বুঝতে পারার সাথে সাথে :)
লাইব্রুগ

4

জুলিয়া: 150 128 116 108 107 বাইট

# in codegolf.jl
r=repmat;b=r([' '],6,8);b[[1,4],:]='_';b[[2,3,23,24]]='|';b=r(b,h,w)[1:h,o+=1:o+w];b[:,end]=10;print(b'...)

যুক্তি দিয়ে চালাতে: julia -e 'o=2;h=18;w=40;include("codegolf.jl")'

আপনি যদি মনে করেন যে বাশ থেকে কল করা প্রতারণা করছে এবং আপনি দোভাষীর ভিতরে কোনও ফাংশন চান, তবে ফাংশনটির সংস্করণটি 117 বাইট :)

f(o,h,w)=(r=repmat;b=r([' '],6,8);b[[1,4],:]='_';b[[2,3,23,24]]='|';b=r(b,h,w)[1:h,o+=1:o+w];b[:,end]=10;print(b'...))

ডেমো

(ধন্যবাদ, অতিরিক্ত বাইট-সেভিং টিপসের জন্য @ গ্লেন-ও!)


পিপিসিজিতে আপনাকে স্বাগতম! এখানেও দেখতে ভালো লাগল!
লুইস মেন্ডো

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

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

অই। হ্যা, আমি করেছিলাম! : পি
তাসোস পাপাস্টাইলিয়ানু

1
আপনি ( repmat([32],6,8)) এর পরিবর্তে পুনঃনির্মাণ ব্যবহার করে কয়েকটি অক্ষর সংরক্ষণ করতে পারেন এবং তারপরে অন্য অক্ষর শেভ করার জন্য পুনরায় নামকরণ করে ( g=repmat;b=g([32],6,8)এবং পরে b=g(b,h,w)[1:h,o+1:o+w+1])। তারপর প্রতিস্থাপন reinterpretসঙ্গে map। আমার গণনা অনুসারে, আপনি এই পরিবর্তনগুলির মধ্যে 9 বাইট সংরক্ষণ করবেন।
গ্লেন ও

3

জাভাস্ক্রিপ্ট, 172 168 165 157 147 142 137 বাইট

(O,W,H)=>{t='_'.repeat(W),x='|       '.repeat(W),f=t+`
`;for(i=0;++i<H;)f+=(!(i%3)?t:(i%6)>3?x.substr(O,W):x.substr(8-O,W))+`
`;return f}

N = (O,W,H)=>{t='_'.repeat(W),x='|       '.repeat(W),f=t+`
`;for(i=0;++i<H;)f+=(!(i%3)?t:(i%6)>3?x.substr(O,W):x.substr(8-O,W))+`
`;return f}

let test_data = [[6,44,11],
                 [2,20,10],
                 [1,1,1],
                 [1,2,3],
                 [3,80,21]];

for (test of test_data)
    console.log(N(...test));


s.repeat(w)পরিবর্তে ব্যবহার করবেন না কেন Array(w).fill(s).join``?
নীল

@ নীল: ভাল ধারণা, তবে আমি আরও ভাল কিছু সম্পর্কে ভেবেছিলাম।
Yay295

এবং তখন বুঝতে পারলাম আপনার সমাধানটি আমি যা ভাবি তার থেকে ভাল better ধন্যবাদ!
Yay295

3

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

↑⎕⍴⎕⍴¨a,4⌽¨a←'_',2⍴⊂⌽⎕⌽¯8↑'|'

পরীক্ষা: 6 44 11, 2 20 10, 1 1 1, 1 2 3, 3 80 21

ইনপুট মূল্যায়ন করা হয়; যেমন অভিব্যক্তি বাম থেকে ডানে থেকে executes, এটা উল্লেখ করার অনুরোধ জানানো F, Wএবং Hযাতে

¯8↑'|' হয় ' |'

⎕⌽ ঘোরানো হয়, এটি সামনে থেকে চ অক্ষগুলি chops করে স্ট্রিংয়ের শেষে রাখে

অন্য মানে বিপরীত

'_',2⍴⊂ '_' এর একটি 3-টুপল তৈরি করে তারপরে স্ট্রিংয়ের পৃথক দুটি অনুলিপি এখনও অবধি

a,4⌽¨a← এখন পর্যন্ত সমস্ত কিছুর 4-ঘূর্ণন সংযোজন করুন, আমরা 6-টিউপল দিয়ে শেষ করব

⎕⍴¨ প্রতিটি উপাদানকে প্রস্থে পুনরায় আকার দিন

⎕⍴ উচ্চতা পুনরায় আকার

একটি ম্যাট্রিক্সে ভেক্টর ভেক্টর মিশ্রিত করুন


2

আসলে , 44 43 40 বাইট

এটি নীলের জেএস উত্তরের আলগোরিদিমটির একটি আসল বন্দর । গল্ফিং পরামর্শ স্বাগত জানাই। এটি অনলাইন চেষ্টা করুন!

╗╝r⌠;6(%4&╜7^^╛'|7" "*+*t╛@H╛'_*3(%YI⌡Mi

Ungolfing:

          Takes implicit input in the order h, w, f.
╗╝        Save f to register 0. Save w to register 1.
r⌠...⌡M   Map over range [0..h-1]. Call this variable i.
  ;         Duplicate i
  6(%       i%6...
  4&        ...&4
  ╜7^^      ...^i^7. Call it c.
  ╛         Push w.
  '|7" "*+  The string "       |"
  *t╛@H     (("       |" * w)[c:])[:w]
  ╛'_*      Push "_" * w
  3(%       Push 3, move duplicate i to TOS, mod.
  YI        If not i%3, take "_"*w, else (("       |" * w)[c:])[:w]
            Function ends here.
i         Flatten the resulting list and print the bricks implicitly.


1

অক্টাভ 80 76 বাইট

% in file codegolf.m
c(6,8)=0;c([1,4],:)=63;c([2,3,23,24])=92;char(repmat(c+32,h,w)(1:h,o+1:o+w))

টার্মিনাল থেকে চালানো: octave --eval "o=2;h=18;w=44; codegolf"

(বিকল্পভাবে, আপনি যদি মনে করেন যে টার্মিনাল কলটি প্রতারণা করছে: পি তবে একটি বেনামি ফাংশন বাস্তবায়নে 86 বাইট লাগবে :)

c(6,8)=0;c([1,4],:)=63;c([2,3,23,24])=92;f=@(o,h,w)char(repmat(c+32,h,w)(1:h,o+1:o+w))

f(2,18,44)অক্টাভ ইন্টারপ্রেটারে কল করুন ।


1

বাশ + শেড, 411 395 381 370 বাইট:

F=`printf '_%.s' $(eval echo {1..$2})`;V="       |";(($[($2-$1)/8]>0))&&L=`printf "$V%.s" $(eval echo {1..$[($2-$1)/8]})`||L=;Z=`printf "%$1.s|%s\n" e "$L"`;I=$[($2-(${#Z}-4))/8];(($I>0))&&W=`printf "$V%.s" $(eval echo {1..$I})`||W=;J=${Z:4}$W;for i in `eval echo {1..$[$3/3+1]}`;{ (($[$i%2]<1))&&O+="$F\n$J\n$J\n"||O+="$F\n$Z\n$Z\n";};echo "`echo -e "$O"|sed -n 1,$3p`"

ঠিক আছে, এখানে আমার প্রথম উত্তর বাশ, বা সেই বিষয়ে কোনও শেল স্ক্রিপ্টিং ভাষা। এটি এখানকার দীর্ঘতম উত্তরও। বিন্যাসে স্থান-বিভাজিত কমান্ড লাইন আর্গুমেন্টের ক্রম নেয় Offset Width Height। এটি বর্তমানে এটির চেয়ে অনেক কম হতে পারে, তাই এটিকে আরও গল্ফ করার জন্য কোনও পরামর্শ এবং / অথবা কৌশলগুলি প্রশংসিত হয়।


1

ডেল্ফি / অবজেক্ট পাসকাল, 305 , 302 , 292 বাইট

3 পরামিতি পড়ার সম্পূর্ণ কনসোল প্রোগ্রাম।

uses SySutils,Math;var i,q,o,w,h:byte;begin o:=StrToInt(paramstr(1));w:=StrToInt(paramstr(2));h:=StrToInt(paramstr(3));for q:=0to h-1do begin for i:=1to w do if q mod 3=0then Write('_')else if IfThen(Odd(q div 3),((i+o)mod 8),((i-o)mod 8))=1then Write('|')else Write(' ');Writeln('');end end.

ungolfed

uses
  SySutils,
  Math;
var
  i,q,o,w,h:byte;
begin
  o:=StrToInt(paramstr(1));
  w:=StrToInt(paramstr(2));
  h:=StrToInt(paramstr(3));

  for q := 0 to h-1 do
  begin
    for i := 1 to w do
      if q mod 3 = 0  then
        Write('_')
      else
        if IfThen(Odd(q div 3),((i+o)mod 8),((i-o)mod 8)) = 1 then
          Write('|')
        else Write(' ');
    Writeln('');
  end
end.

দুঃখের বিষয়, ডেল্ফির একটি টের্নারি অপারেটর নেই এবং এটি বেশ ভার্জোজ ভাষা।

পরীক্ষা ক্ষেত্রে

D:\Test\CodeGolfWall\Win32\Debug>Project1.exe 2 20 10
____________________
  |       |       |
  |       |       |
____________________
      |       |
      |       |
____________________
  |       |       |
  |       |       |
____________________

D:\Test\CodeGolfWall\Win32\Debug>Project1.exe 6 44 11
____________________________________________
      |       |       |       |       |
      |       |       |       |       |
____________________________________________
  |       |       |       |       |       |
  |       |       |       |       |       |
____________________________________________
      |       |       |       |       |
      |       |       |       |       |
____________________________________________
  |       |       |       |       |       |

সম্পাদনা করুন: সমস্ত ভেরিয়েবলের জন্য টাইপ হিসাবে বাইট ব্যবহার করে 3 বাইট শেভ করতে পারে।

সম্পাদনা 2: এবং কনসোল অ্যাপ্লিকেশনগুলির প্রোগ্রাম ঘোষণার দরকার নেই , -10

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