এএসসিআইআই খিলানগুলি তৈরি করুন


17

আমি আসকি শিল্প পছন্দ করি এবং আমি প্রচুর বিরক্ত হয়ে পড়েছি, তাই আমি কিছু আসকি চরিত্র খুঁজে পেয়ে এলোমেলো জিনিস, 8-বিট মারিও দুর্গ, ম্যাসেস এবং তোরণ তৈরি করতে শুরু করি। আমি দেখতে পেলাম যে খিলানগুলি সহজেই ঝরঝরে করে রাখা যেতে পারে।

╔═══════╗
║╔═════╗║
║║╔═══╗║║
║║║╔═╗║║║
╨╨╨╨─╨╨╨╨

চ্যালেঞ্জ

এমন একটি প্রোগ্রাম, ফাংশন, বা অন্য কোনও স্ট্যান্ডার্ড ফর্ম্যাট তৈরি করুন যা 0 এর চেয়ে বড় বা সমান একটি পূর্ণসংখ্যাকে গ্রহণ করে (যদি আপনি বোনাস না করে থাকেন) এবং নির্দিষ্ট ধনুর পরিমাণের সাথে এএসসিআই আর্টকে আউটপুট দেয়।

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

ইনপুট:

7

আউটপুট:

╔═════════════╗
║╔═══════════╗║
║║╔═════════╗║║
║║║╔═══════╗║║║
║║║║╔═════╗║║║║
║║║║║╔═══╗║║║║║
║║║║║║╔═╗║║║║║║
╨╨╨╨╨╨╨─╨╨╨╨╨╨╨

অল্টার:

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

ইনপুট:

1

আউটপুট:

╔═╗
╨─╨

অল্টার:

+-+
| |
---
  • যদি পূর্ণসংখ্যা 0 হয় তবে কোনও কিছুই আউটপুট করবেন না
  • এই প্রশ্নটি UF-8 এ হবে, প্রতিটি চরিত্র একটি "বাইট" হিসাবে গণনা করবে
  • এটি তাই সংক্ষিপ্ত উত্তর জেতে।
  • আপনার +-+পরিবর্তে ╔═╗, ---পরিবর্তে ╨─╨এবং |পরিবর্তে ব্যবহার করার বিকল্প রয়েছে

বোনাস (বিকল্প সংস্করণে এটি অনুমতি দেবে কিনা তা সিদ্ধান্ত নেওয়া হয়নি কারণ এটি এতটা কঠিন হবে না)

-10% যদি প্রোগ্রামটি negativeণাত্মক সংখ্যাগুলিকে সমর্থন করে এবং তেমনিভাবে তোরণগুলি ফ্লপ করে

╥╥╥╥─╥╥╥╥
║║║╚═╝║║║
║║╚═══╝║║
║╚═════╝║
╚═══════╝

3
এএফআইএকিগুলি এএসসিআইআই অক্ষর নয়। ইউনিকোড-আর্ট
flawr

welp, @ অবৈধ আপনি ঠিক বলেছেন। এখন কী ...
জুয়ানপোটাটো

বিশ্ব ভেঙে যাচ্ছে! চিন্তা করবেন না, সম্ভবত কেবল উল্লেখ করুন যে তারা স্ট্যান্ডার্ড ASCII এর অংশ নয়, তবে আসকি-আর্ট ট্যাগটি এখনও প্রযোজ্য (ইউনিকোড ট্যাগটি একটি রসিকতা ছিল))
flawr

এটি প্রসারিত ASCII এর মতো দেখায়, তবে সম্ভবত আপনি ঠিক আছেন।
মামা ফান রোল

2
@ ՊՓԼՃՐՊՃՈԲՍԼ বর্ধিত হওয়া ASCII কোন মানক সংস্করণ আছে en.wikipedia.org/wiki/Extended_ASCII সর্বনিকটবর্তী বস্তু আছে codepage হয় 437 en.wikipedia.org/wiki/Code_page_437 যা মার্কিন যুক্তরাষ্ট্র ও অন্যান্য অনেক দেশে প্রমিত ছিল কিন্তু আমি খুঁজে যখন আমি এটিকে একটি কোডপেজ 437 সম্পাদক-এ অনুলিপি করুন এবং উইন্ডোতে ফিরে +---+যান এটি উপরে, পাশে |এবং এর নীচের অংশে খিলান হিসাবে "ব্যাখ্যা করে" -----যা আমার কাছে দেখতে সুন্দর লাগে। হুয়ানপোটাতো, আপনি যদি অ-এসকিআই অক্ষর ব্যবহার করতে চান তবে দয়া করে প্রশ্নের এনকোডিংটি নির্দেশ করুন। এটি দাঁড়িয়ে থাকা হিসাবে আমি অস্পষ্ট হিসাবে বন্ধ করতে ভোট দিচ্ছি।
স্তর নদী সেন্ট

উত্তর:



2

পাইথন 2, 106 বাইট (94 অক্ষর)

n=input();j=1
exec"s=j/2*'║';print s+'╔'+'═'*(2*n-j)+'╗'+s;j+=2;"*n
if n:t='╨'*n;print t+'─'+t

অনেকটাই অকপট. অনুভূমিক এবং উল্লম্ব বারগুলির পরিবর্তিত সংখ্যার সাথে লাইন প্রান্তে মুদ্রণ করে। শেষ লাইনটি আলাদাভাবে মুদ্রিত হয়।

আমার মনে হচ্ছে আমি কিছু অপটিমাইজেশন মিস করছি। চরগুলি একাধিক বাইটের অর্থ এই যে আপনি এর মতো কিছু করতে পারবেন না '║╨'[n>0], তাই লুপের শেষ লাইনটি প্রিন্ট করার ভাল উপায় আমি খুঁজে পাইনি। এটি কুৎসিত যে কাউন্টারটির সাথে এতগুলি হেরফের চলছে। আমি সরাসরি আপডেট স্ট্রিং পছন্দ করতে চাই s+='║', তবে সূচকটি অনুভূমিক বারগুলির জন্যও ব্যবহৃত হয়।


আপনি এখন +-|খিলানগুলি তৈরি করতে ব্যবহার করতে পারেন , উদাহরণগুলির জন্য অপ দেখুন।
জুয়ানপোটাটো

2
@ জুয়ানপোটাতো ওপি এর মূল পোস্টার। আপনি প্রশ্ন মানে?
অ্যাডিসন ক্র্যাম্প

1
@ ফ্লাগসপাম হ্যাঁ, আমি ব্যবহারগুলি দেখেছি যেখানে এটির মূল পোস্টটি বোঝায়
জুয়ানপোটাটো

2

পার্ল, 78 82 অক্ষর

$n='─';$_='══'x pop;while(s/══//){print"$s╔═$_╗$s\n";$s.="║";$n="╨$n╨"}$s&&print$n

দুঃখের বিষয়, আকারটি 10% এর বেশি না বাড়িয়ে বোনাসের সুবিধা নেওয়ার কোনও উপায় আমি বের করতে পারিনি। আমি এখনও বিজয়ী হতে পারে।

Ungolfed

খুব সোজা, সত্যি। উপরের লাইনটি ( ╨$n╨) ক্রমবর্ধমানভাবে তৈরি করে, শীর্ষ রেখাটি ( ══) দুটি অক্ষর দ্বারা সংক্ষিপ্ত করার সময় শেষ হয় যখন এটি আর আর ছোট করা যায় না, তাই কাউন্টারগুলির সাথে আমার গোলযোগ করতে হবে না।

 $n = '─'; # Bottom line
 $_ = '══'x pop; # "Top" line, length from commandline argument
 while (s/══//) { # Shorten top line by two characters
     print "$s╔═$_╗$s\n"; # Print current line with $s (sides)
     $s .= "║";           # Append vertical bar to sides
     $n  = "╨$n╨";        # Widen bottom line
 }
 $s && print $n; # Print bottom line if input is not 0

আমি মনে করি এটি এন = 0 এর জন্য একটি একক মুদ্রণ করে তবে এটি কিছুই মুদ্রণ করা উচিত।
লিন

@ মরিস আমি কেবল এটি চালিয়েছি এবং আপনি সঠিক
জুয়ানপোটাটো

1
@ মরিস ডাং! তুমি একেবারেই সঠিক. আমার আসল সংস্করণটি ভাল ছিল তবে লাইনের সাথে কোথাও আমি চেকটি হারিয়েছি। স্থির, 4 টি চর ব্যয়ে যে স্পষ্ট জন্য ধন্যবাদ।
টাইপ_আউটকাস্ট

আমি জানি এটি পুরানো, তবে @ অ্যাবিগেলের মন্তব্যে যোগ করতে আপনি -nখুব বেশি ব্যবহার করে বাইট সংরক্ষণ করতে পারেন : অনলাইনে চেষ্টা করে দেখুন!
ডম হেস্টিংস

1

বাশ, 124 বাইট (112 টি অক্ষর)

printf -vh %$1s
b=${h// /╨}
h=${h// /═}
for((n=$1;n--;)){
echo $v$h${h:1}╗$v
h=${h#?}
v+=║
}
(($1))&&echo $b$b

নমুনা রান:

bash-4.3$ bash ascii-arch.sh 7
╔═════════════╗
║╔═══════════╗║
║║╔═════════╗║║
║║║╔═══════╗║║║
║║║║╔═════╗║║║║
║║║║║╔═══╗║║║║║
║║║║║║╔═╗║║║║║║
╨╨╨╨╨╨╨─╨╨╨╨╨╨╨

bash-4.3$ bash ascii-arch.sh 1
╔═╗
╨─╨

bash-4.3$ bash ascii-arch.sh 0

1

জাপট -R , 29 বাইট

ব্যবহার +& -রক্তাক্ত ইনপুট বৈধতা পরিচালনা করতে 4 বাইটের ত্যাগ!

©Æ'+²¬q-p´UÑÄÃpS û| p-pNÑÄ)ªP

চেষ্টা করে দেখুন


ব্যাখ্যা

                                  :Implicit input of integer U
©                                 :Logical AND with U
 Æ                                :Map the range [0,U)
  '+                              :  Literal "+"
    ²                             :  Repeat twice
     ¬                            :  Split
      q                           :  Join with
       -                          :   Literal "-"
        p                         :   Repeat
         ´U                       :    Decrement U
           Ñ                      :    Multiply by 2
            Ä                     :    Add 1
             Ã                    :End mapping
              pS                  :Push a space
                 û|               :Centre pad each element with "|" to the length of the longest element
                    p     )       :Push
                     -            : Literal "-"
                      p           : Repeat
                       N          :  The array of inputs (which will be cast to an integer if we perform a mathematical operation on it)
                        ÑÄ        :  Multiply by 2 and add 1
                           ª      :Logical OR
                            P     :The empty string
                                  :Implicitly join with newlines and output


@জাইমা, আপনার মানে কী? আপনার 0 আকারের একটি খিলান কীভাবে থাকতে পারে?
শেগি

If the integer is 0 then don't output anythingচ্যালেঞ্জ থেকে: /
ডিজাইমা

@জাইমা, ওহ, আমি এটি মিস করেছি। ধন্যবাদ। প্রথমত: বু-ওর্নস বৈধতা ইনপুট! দ্বিতীয়ত, জাপট কিছুই আউটপুট দিতে পারে না - আমি আউটপুট করতে পারতাম 0, falseবা কিছু বাইটের ব্যয়ে খালি স্ট্রিং করতাম তবে আমি জানি না যে এর কোনওটি গ্রহণযোগ্য হবে কিনা, সম্ভবত, খালি স্ট্রিং, যার জন্য আমার 5 বাইট খরচ পড়বে ( 0কেবলমাত্র আমার জন্য 1 ব্যয় হবে)।
শেগি

0

জাভাস্ক্রিপ্ট (ES6), 101 টি অক্ষর

f=(n,i=0)=>n?i-n?(b="║"[r="repeat"](i))+`╔${"═"[r]((n-i)*2-1)}╗${b}
`+f(n,i+1):(g="╨"[r](n))+"─"+g:""

ব্যাখ্যা

পুনরাবৃত্তি ফাংশন যা প্রতিটি লাইন মুদ্রণ করে

f=(n,i=0)=>              // f = recursive function, i = current line (default = 0)
  n?                     // if n != 0
    i-n?                 // if we are not in the last line, print the line
      (b="║"[r="repeat"](i))+`╔${"═"[r]((n-i)*2-1)}╗${b}
`+f(n,i+1)               // add the output of the next line
    :(g="╨"[r](n))+"─"+g // if we ARE in the last line, print the last line
  :""                    // print nothing if n = 0

পরীক্ষা

ব্রাউজারের সামঞ্জস্যের জন্য পরীক্ষা ডিফল্ট প্যারামিটার ব্যবহার করে না।


0

পিএইচপি (109 অক্ষর)

$s='';for($b=($n=$argv[1])?'─':'';$n--;){echo$s.'╔═'.str_repeat('══',$n)."╗$s\n";$s.='║';$b="╨{$b}╨";}echo$b;

তবুও এই স্ট্রিমিপিট থেকে মুক্তি পাওয়া দরকার তবে বেশিরভাগ বিকল্প মুলিবাইট চরগুলি পরিচালনা করতে পারে না।

$s = '';
// Initialise $b (bottom) to '─' or '' for n==0
for ($b = ($n = $argv[1]) ? '─' : ''; $n--;) {
    // Echo sides + arch + sides
    echo $s . '╔═' . str_repeat('══', $n) . "╗$s\n";
    // Growing sides
    $s .= '║';
    // Growing bottom
    $b = "╨{$b}╨";
}
// Show bottom
echo $b;

0

রেটিনা , rs৯ টি চর

.+
$0$*═$0$*═╗
^═
╔
+`(║*)╔═(═+)═╗║*$
$0¶$1║╔$2╗║$1
(\S+)$
$0¶$1
T`═╔╗║`─╨`\S+$

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

এটি রেটিনাতে একটি নতুন বৈশিষ্ট্য ব্যবহার করে যা দশমিক সংখ্যার পরিবর্তে \d+সেই বহু অক্ষরের তালিকা রয়েছে $0$*═


0

সুইফ্ট (209 বাইট)

সম্ভবত সুইফট এর জন্য সেরা ভাষা নয়, এটি আমার প্রথমবারের মতো কোনও গল্ফ চ্যালেঞ্জ করার চেষ্টা করছে:

func *(l:String,r: Int)->String{return r>0 ?l+(l*(r-1)):""}
let n=Int(readLine()!)!
for i in 0...(n-1){let a=("║"*i)+"╔═";let b=a+("══"*(n-1-i))+"╗"+("║"*i);print(b)};print("╨"*n+"─"+"╨"*n)

0

রুবি, 90 বাইট (74 টি অক্ষর)

->n{n.times{|i|puts ?║*i+?╔+?═*((n-i)*2-1)+?╗+?║*i}>0&&puts(?╨*n+?─+?╨*n)}

নমুনা রান:

2.1.5 :001 > ->n{n.times{|i|puts ?║*i+?╔+?═*((n-i)*2-1)+?╗+?║*i}>0&&puts(?╨*n+?─+?╨*n)}[7]
╔═════════════╗
║╔═══════════╗║
║║╔═════════╗║║
║║║╔═══════╗║║║
║║║║╔═════╗║║║║
║║║║║╔═══╗║║║║║
║║║║║║╔═╗║║║║║║
╨╨╨╨╨╨╨─╨╨╨╨╨╨╨
 => nil 

2.1.5 :002 > ->n{n.times{|i|puts ?║*i+?╔+?═*((n-i)*2-1)+?╗+?║*i}>0&&puts(?╨*n+?─+?╨*n)}[1]
╔═╗
╨─╨
 => nil 

2.1.5 :003 > ->n{n.times{|i|puts ?║*i+?╔+?═*((n-i)*2-1)+?╗+?║*i}>0&&puts(?╨*n+?─+?╨*n)}[0]
 => false 

0

হাস্কেল, 151 162 বাইট

r=replicate
c=concat
f n=putStr$unlines[c[r i '║',"╔",r(2*(n-i)-1)'═',"╗",r i '║']|i<-[0..n-1]]++c[r n '╨',r(signum n)'─',r n '╨']
main=readLn>>=f

সম্পাদনা: আমি 0ইনপুট হিসাবে ডিল করতে ভুলে গেছি


0

54, 54 চর / 95 বাইট

⩥ïⓜᵖ⟮ ⍘|ď⟯$+`+⦃⟮⍘-ď (ï⟯-$)*2-1)}+`+Ⅰ$;ï⅋ᵖⅠï+⬭+Ⅰï,Ⅱ*2+1

Try it here (Firefox only).

ব্যাখ্যা

⩥ïⓜᵖ⟮ ⍘|ď⟯$+`+⦃⟮⍘-ď (ï⟯-$)*2-1)}+`+Ⅰ$;ï⅋ᵖⅠï+⬭+Ⅰï,Ⅱ*2+1 // implicit: ï=input, $=mapped item
                                                       // PHASE 1
⩥ïⓜ                                                   // create a range to map over
    ᵖ                                                  // push to stack:
     ⟮ ⍘|ď⟯$                                            // | repeated $ times
           +`+⦃⟮⍘-ď (ï⟯-$)*2-1)}+`                      // & +[- repeated 2$-1 times]+
                                 +Ⅰ$;                  // & | repeated $ times
                                                       // PHASE 2
                                     ï⅋                // if ï>0
                                       ᵖ               // push to stack 2 items:
                                        Ⅰï+⬭+Ⅰï,      // | repeated $ times & [space] & | repeated $ times
                                                 Ⅱ*2+1 // and - repeated 2ï+1
                                                       // implicit stack output, newline-separated

দ্রষ্টব্য: এটি এমন স্পটগুলিতে পৌঁছাতে ভাল অল 'অনুলিপি ব্লক ব্যবহার করে যেখানে সাধারণ পরিবর্তনশীল ঘোষণা করা যায় না reach


0

সেড, 97 বাইট (81 টি অক্ষর)

(96 বাইট (80 টি অক্ষর) কোড + 1 অক্ষর কমান্ড লাইন বিকল্প)

s/.(.*)/2&\13/
t
:
H
s/(.+)11(.+)/4\1\24/
t
y/1234/─╨╨╨/
H
g
s/\n//
y/1234/═╔╗║/

আনারি ইন্টিজার হিসাবে ইনপুট প্রত্যাশিত ।

নমুনা রান:

bash-4.3$ sed -r 's/.(.*)/2&\13/;t;:;H;s/(.+)11(.+)/4\1\24/;t;y/1234/─╨╨╨/;H;g;s/\n//;y/1234/═╔╗║/' <<< '1111111'
╔═════════════╗
║╔═══════════╗║
║║╔═════════╗║║
║║║╔═══════╗║║║
║║║║╔═════╗║║║║
║║║║║╔═══╗║║║║║
║║║║║║╔═╗║║║║║║
╨╨╨╨╨╨╨─╨╨╨╨╨╨╨

bash-4.3$ sed -r 's/.(.*)/2&\13/;t;:;H;s/(.+)11(.+)/4\1\24/;t;y/1234/─╨╨╨/;H;g;s/\n//;y/1234/═╔╗║/' <<< '1'
╔═╗
╨─╨

bash-4.3$ sed -r 's/.(.*)/2&\13/;t;:;H;s/(.+)11(.+)/4\1\24/;t;y/1234/─╨╨╨/;H;g;s/\n//;y/1234/═╔╗║/' <<< ''

সেড, 105 বাইট (75 টি অক্ষর)

(104 বাইট (74 টি অক্ষর) কোড + 1 অক্ষর কমান্ড লাইন বিকল্প)

y/1/═/
s/.(.*)/╔&\1╗/
t
:
H
s/(.+)══(.+)/║\1\2║/
t
y/╔║╗═/╨╨╨─/
H
g
s/\n//

আনারি ইন্টিজার হিসাবে ইনপুট প্রত্যাশিত ।

নমুনা রান:

bash-4.3$ sed -r 'y/1/═/;s/.(.*)/╔&\1╗/;t;:;H;s/(.+)══(.+)/║\1\2║/;t;y/╔║╗═/╨╨╨─/;H;g;s/\n//' <<< '1111111'
╔═════════════╗
║╔═══════════╗║
║║╔═════════╗║║
║║║╔═══════╗║║║
║║║║╔═════╗║║║║
║║║║║╔═══╗║║║║║
║║║║║║╔═╗║║║║║║
╨╨╨╨╨╨╨─╨╨╨╨╨╨╨

bash-4.3$ sed -r 'y/1/═/;s/.(.*)/╔&\1╗/;t;:;H;s/(.+)══(.+)/║\1\2║/;t;y/╔║╗═/╨╨╨─/;H;g;s/\n//' <<< '1'
╔═╗
╨─╨

bash-4.3$ sed -r 'y/1/═/;s/.(.*)/╔&\1╗/;t;:;H;s/(.+)══(.+)/║\1\2║/;t;y/╔║╗═/╨╨╨─/;H;g;s/\n//' <<< ''

0

ক্যানভাস , 15 বাইট

-*+∔]⤢:↷±n│L-×∔

এখানে চেষ্টা করুন!

ব্যাখ্যা:

{    ]            map over 1..input
 -*                 repeat "-" counter times
   +∔               append "+" to that
      ⤢           transpose
       :          create a duplicate of that
        ↷±        rotated 90°, then reversed horizontally
          n       overlap the 2
           |      and palindromize horizontally with 1 overlap
            L     get the with of that
             -×   repear "-" that many times
               ∔  and add vertically to the rest of the output
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.