আমাকে বাক্সটি খুলতে সহায়তা করুন


33

আমার কাছে একটি এসসিআইআই-আর্ট বক্স রয়েছে এবং এটি খোলার জন্য আমার একটি প্রোগ্রাম দরকার।

উদাহরণ

ইনপুট:

-------
|     |
|_____|

আউটপুট:

      /
     /
    /
   /
  /
 /
/
|     |
|_____|

সবিস্তার বিবরণী

  • প্রথম লাইনে কেবল -কমপক্ষে 3 টি থাকবে
  • মাঝারি সারিগুলি |ফাঁকা জায়গা দিয়ে শুরু হবে এবং শেষ হবে|
    • সমস্ত মাঝারি সারি একই হবে
  • শেষ সারি দিয়ে শুরু করবো |আছে _এবং একটি দিয়ে শেষ|
  • সমস্ত সারি একই দৈর্ঘ্য হবে

বাক্সটি খোলার:

  • প্রতিটি -একটি /আরোহণ রেখা এবং অবস্থান একটি প্রতিস্থাপন করা উচিত ।

2
"শট দি বক্স" গেমটির বিপরীতে?
অ্যাডিসন ক্রম্প 19


28
Twiceাকনাটি দ্বিগুণ হয়ে গেলে কবে খুলবে? ওহ ভাল, ASCII শিল্পকে দোষ দিন।
ড্যারেল হফম্যান

8
বক্স কি আছে?
উইলিয়াম টটল্যান্ড

2
সেখানে কোনও কার্যনির্বাহী দোভাষী নেই, তাই আমি তখন অনুমান করি না। কিছু যায় আসে না; আমি যখন দোভাষী করি (শীঘ্রই, আশা করি), আমি উত্তর পোস্ট করব।
ইটিএইচ প্রডাকশনগুলি

উত্তর:


7

সিজেম, 14 বাইট

l,{N'/@S*}%W%q

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

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

l               Read the first line from STDIN.
 ,              Compute the line's length. Result: L
  {      }%     Map; for each I in [0 ... L-1]:
                  (implicit) Push I.
   N              Push a linefeed.
    '/            Push a slash.
      @           Rotate I on top of the stack.
       S*         Turn I into a string of I spaces.
           W%   Reverse the resulting array of strings and characters.
             q  Read the remaining input from STDIN.

12

জাভাস্ক্রিপ্ট ES6, 57 বাইট

s=>s[r="replace"](/-+/,s=>s[r](/-/g,`
$'/`))[r](/-/g,' ')

একটি শীর্ষস্থানীয় নিউলাইন আউটপুট। -S এর সারি নিয়ে এবং এগুলিকে ত্রিভুজ হিসাবে রূপান্তর করে কাজ করে, এরপরে -স্পেস দিয়ে প্রতিস্থাপন করে ।

সম্পাদনা: @ বর্ধিত 5 বাইট ধন্যবাদ @ edc65।


1
+1 আমি নতুন কিছু শিখলাম ($ ')। পরিবর্তে এই পুরাতন কৌশলটি আপনার জন্য 4 বাইট বাঁচাতে পারে:f=s=>s[R='replace'](/-+/,s=>s[R](/-/g,"\n$'/"))[R](/-/g,' ')
31c

@ edc65 ধন্যবাদ, আমি আসলে এটিকে 5 বাইট তৈরি করি; আমার টাইপো ঠিক করার জন্য ধন্যবাদ (যেমন আপনি অনুমান করেছিলেন যে আমি বিকাশ করেছি \nএবং পরে রূপান্তর করব)।
নীল

9

পিবি (ননক্যামেটিং), 125 বাইট

^w[B!0]{>}w[B!45]{<w[B=10]{t[T+1]b[0]}}v[X]vw[T!0]{vb[124]<[X]b[124]>w[B=0]{>}t[T-1]}w[X!1]{<b[95]}<w[B!0]{^}w[Y!-1]{b[47]>^}

আপনার এই উত্তরটি চালানোর জন্য পিবিআইয়ের সংস্করণটি প্রশ্নের চেয়ে নতুন। এটি পুরানো সংস্করণগুলিতে কাজ করত ব্যতীত আমি কখনই ইনপুটটিতে নতুন লাইনের অনুমতি দিতে পারিনি। আচ্ছা ভালো.

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

এই মজাদার অ্যানিমেশনটি দেখুন!

দীর্ঘ বিরতি হ'ল ব্রাশটি ইনপুটটির উপরে চলে over

Ungolfed:

^w[B!0]{>}                # Go to the end of the input
w[B!45]{<                 # Head left until hitting a hyphen
    w[B=10]{                # For each newline on the way:
            t[T+1]                # Count it
            b[0]                  # Delete it
    }
}

v[X]                      # Move down as far as it is right + the number of \n
v                         # ...plus one

w[T!0]{                   # While the counting variable is nonzero:
    vb[124]                 # Go down and draw a pipe
    <[X]b[124]              # Draw a pipe on the left as well
    >w[B=0]{>}              # Go back to the right side
    t[T-1]                  # Decrement variable
}

w[X!1]{<b[95]}            # Draw the bottom of the box
<w[B!0]{^}                # Go up the left wall
w[Y!-1]{b[47]>^}          # Go up and right, drawing the lid

2
শীতল অ্যানিমেশনের জন্য +1। আপনি কিভাবে এটি তৈরি?
গোথাম

@ গৌতম আমি অনুমান করব যে আপনি আপনার স্ক্রিনটি রেকর্ড করেছেন এবং ভিডিওটি ক্রপ করবেন। তারপরে, এটি নিন এবং এটি একটি জিআইএফ রূপান্তর করুন। অবশ্যই, অনুমান করার জন্য, আমি আসল পদ্ধতিটি জানি না
স্পটলাইট

@ আশ্চর্যজনকভাবে আপনি এটি পেয়েছেন
আন্ডারগ্রাউন্ডোমোরিয়েল


8

রেটিনা, 34 20 বাইট

- (= (-? *)) ¶?
$ 1 / ¶
-
 

প্রথম ধাপে প্রতিটি এর অনুসরণ করে, একটি এবং একটি নতুন লাইন -দিয়ে প্রতিস্থাপিত হয় । মূল প্রথম লাইনের শেষে থাকা নিউলাইনটি মোছা হয়েছে। দ্বিতীয় ধাপে আমরা নতুনকে স্পেসে পরিবর্তন করি যার ফলস্বরূপ কাঙ্ক্ষিত আউটপুট হয়।-/-

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


2
কেবল এটির মজাদার জন্য, এটি একটি একক পর্যায়েও সম্ভব: retina.tryitonline.net/… (যদিও একই বাইট)
মার্টিন এন্ডার

আপনি যদি প্রথম নিউলাইন আলাদাভাবে খান তবে আপনি ট্রেলিংগুলি $%'ক্যাপচার করতে ব্যবহার করতে পারেন -যা আপনাকে 5 বাইট সাশ্রয় করে: অনলাইনে চেষ্টা করে দেখুন!
নীল

7

এমএটিএল , 14 15 বাইট

' /'jnXyPQ)`jt

ইনপুটটিতে একটি ট্রিলিং নিউলাইন থাকা উচিত।

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

ব্যাখ্যা

' /'       % push string (will be indexed into to generate the open lid)
jn         % read first line of input and push its length
Xy         % identity matrix with that size
P          % flip vertically
Q          % add 1. Now the matrix contains 1 and 2, to be used as indices
)          % index into string. Produces a 2D char array for the lid
`          % do-while loop
  j        %   push input line
  t        %   duplicate. Truthy if nonempty
           % implicitly end loop. The loop condition is the top of the stack,
           % that is, the input line that has just been read.
           % This is truthy if non-empty; and in that case another line will
           % be read in the next iteration.
           % implicitly display stack contents, bottom to top

5

জাপট, 28 26 25 22 18 17 বাইট

Ur-@"
{SpUa- -Y}/

এটি অনলাইন পরীক্ষা!

একটি শীর্ষস্থানীয় নিউলাইন আউটপুট দেয়, যা ওপি অনুসারে গ্রহণযোগ্য।

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

Ur-@       // Replace each hyphen X in the input and its index Y with this function:
"          //  Start a string that contains a newline.
{        } //  Insert here:  
   Ua- -Y  //   Take the index of the last hyphen in the input, subtract Y,
 Sp        //   and return that many spaces.
/          //  Finish off the string with a slash.

বাক্সটির ডান প্রান্তে কব্জাগুলির অনুমতি দেওয়া থাকলে এটি 4 বাইট সংক্ষিপ্ত হবে:

Ur-@"
{SpY}\\

4

জাভাস্ক্রিপ্ট (ES6), 66

b=>([a,t]=b.split`-
`,[...a+0].map(_=>(t=l+`/
`+t,l+=' '),l=''),t)

পরীক্ষা

f=b=>([a,t]=b.split`-\n`,[...a+0].map(_=>(t=l+`/\n`+t,l+=' '),l=''),t)

var box = `-------
|     |
|_____|`

console.log=x=>O.textContent=x

console.log(f(box))
<pre id=O></pre>


3

জাভা 8, 158 118 বাইট

এটি কেবল একটি শুরু, তবে ওহে, FGITWFTW।

n->{String o="";int z=n.lastIndexOf("-"),i=z;for(;i-->0;o+="/\n")for(int y=i;y-->0;o+=" ");return o+n.substring(z+2);}

স্ট্রিং হিসাবে ইনপুট আশা করে, বাক্সটি ফেরত দেয়।


3

পাইথন 3, 1̶7̶0̶ 88 বাইট

এখানে আমার সংক্ষিপ্ত (এর) কোডটি রয়েছে: সম্পাদনা: এখন ডেনিসের কোড সম্পাদনা সহ 82 বাইট শর্ট!

f=open('f.txt')
d=len(f.readline())-1
a=f.read()
while d:d-=1;print(' '*d+'/')
print(a)

পাইথন 3, 421 বাইট

বিকল্পভাবে, কেবল মজা করার জন্য, আপনি এটি ব্যবহার করতে পারেন যা এটি ধীরে ধীরে খোলে:

import time
import os
f = open('f.txt', 'r')
e = f.readline()
a = f.read()
d = len(e)
c = 0
t = e + a
g = ''
clear = lambda: os.system('cls')
while c <= d - 1:
    clear()
    print(("\n" * ((d - 1) - (c))) + t)
    c += 1
    e1 = e[0:(d - c)  -1]
    e2 = e[(d - c):len(e)]
    e1 += '/'
    e2 = ' ' * len(e2)
    y = (' ' * len(e1)) + '/' + '\n'
    g += y
    t = (g + e1 + e2 + '\n' + a)[d:len(g + e1 + e2 + '\n' + a)]
    time.sleep(0.2)
f.close()

যে কোনওটি ব্যবহার করতে, আপনাকে একই ডিরেক্টরিতে কোনও পাঠ্য ফাইল তৈরি করতে হবে যাকে 'f.txt' নামক কোনও প্রস্থ বা গভীরতার একটি এসকিআই বক্স রয়েছে box এটি তখন সেই বাক্সটি খুলবে।


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

কেন পৃথিবীতে আপনার সময় দরকার? এই প্রশ্নটি শুধুমাত্র একটি একক আউটপুট জন্য জিজ্ঞাসা।
অ্যাডিসন ক্রম্প 23

আমি যেমন বলেছি, আমার এই ধাঁধাটির ব্যাখ্যাটি কিছুটা বন্ধ ছিল এবং আপনি যদি আউটপুট দেন তবে এটি আপনাকে জিজ্ঞাসা করা প্রশ্নের চেয়ে বেশি দেখাবে।
দানব

ঠিক আছে, আমি একটি সরল উত্তর যুক্ত করেছি যা প্রশ্নটি এখন যা বুঝতে পেরেছিল ঠিক তাই করে does এটি সুন্দর নয় তবে এটি কাজ করে। আমার বিকল্প কোডটি যে কেউ এটির জন্য খোলা দেখতে যথেষ্ট দুর্দান্ত দেখতে চান
দানব

2
কিছু ছোটখাটো পরিবর্তন আপনার বাইট গণনাটি 81 এ নামিয়ে আনে (এসটিডিএন থেকে পড়া)।
ডেনিস

3

বাশ, 85 84 79 টি অক্ষর

(খাঁটি বাশ সংস্করণ, কোনও বাহ্যিক আদেশ ব্যবহার করা হয়নি used)

r(){
a="${a/-
/
$s/
}"
s+=\ 
[[ $a = -* ]]&&r
}
mapfile a
r
IFS=
echo "${a[*]}"

একটি শীর্ষস্থানীয় নিউলাইন আউটপুট।

নমুনা রান:

bash-4.3$ bash open-the-box.sh <<< $'-------\n|     |\n|_____|'

      /
     /
    /
   /
  /
 /
/
|     |
|_____|

echoএকটি বাহ্যিক আদেশ - /usr/bin/echo;)
লেবি

echoএক্সিকিউটেবল মান অপারেটিং সিস্টেম এর অনুরূপ বিদ্যমান নেই। আজকাল যেগুলি কেবল পোর্টেবিলিটিটি গুরুত্বপূর্ণ তা হলে এটি ব্যবহৃত হয়, যেমনটি একটি মান অনুযায়ী , তবে বেশিরভাগ আধুনিক শেলগুলির নিজস্ব বিল্টিন রয়েছে echoযা ডিফল্টরূপে ব্যবহৃত হয়: পেস্টবিন. com/আরএনএক্সএইচবিবি @ লেভি, আপনি যদি নাম পরিবর্তন করেন / সরান আপনার /usr/bin/echo, আমার কোড এখনও কাজ করবে।
manatwork

(এটি একটি রসিকতা ছিল ....)
লেবি

1
উহু. ঠিক আছে. দুঃখিত, আমি ইতিমধ্যে এমন ব্যক্তির সাথে দেখা করেছি যারা একই দাবি করেছে, তবে গুরুতরভাবে।
manatwork

3

পার্ল, 61 54 33 + 3 = 36 টি অক্ষর

s^-^" "x(length$')."/\n"^ge&chomp

এটি হিসাবে চালান

perl -ple 's^-^" "x(length${chr 39})."/\n"^ge&chomp' closed_box_file

প্রতিটি -প্রথম লাইনে একটি স্ট্রিং কিছু সংখ্যা সংযুক্তকরণের ফলে যে দ্বারা প্রতিস্থাপিত হয় , /এবং \n${chr 39}পার্লের (ইন) বিখ্যাত $'ওরফে $POSTMATCHবিশেষ ভেরিয়েবলের মূল্যায়ন করে । শেষ অবধি, শেষের -চরিত্রের জন্য যুক্ত করা পূর্ববর্তী চরিত্রটি চ্যাম্প পরিত্রাণ পেয়ে যায় ।

7 + আরও অক্ষর সংরক্ষণ করার জন্য @ মান্যাটওয়ার্ককে ধন্যবাদ।

বোনাস - s^-^" "x$i++."\\\n"^ge&&chop29 + 3 টি অক্ষরে :) ডান প্রান্ত থেকে বাক্সটি খোলে :)। এটি চালান:

gowtham@ubuntu:~$ cat a
----
|  |
|__|
gowtham@ubuntu:~$ perl -plE 's^-^" "x$i++."\\\n"^ge&&chop' closed_box_file
\
 \
  \
   \
|  |
|__|

@ মান্যাটওয়ার্ক কেবল প্রথম লাইনে রয়েছে -তাই হ্যাঁ, আমি এটিকে আরও গল্ফ করতে পারি। ধন্যবাদ!
গওথাম

$.==1$.<2, &&chop&chop, চারপাশে অতিরিক্ত জুড়ি বন্ধ করুন, 1 হিসাবে lengthগণনা করুন {chr 39}, কারণ এটি কেবল শেলের সিনট্যাক্সের কারণে কমান্ড লাইন সংস্করণ দ্বারা প্রয়োজনীয় নয়: $.<2&&s^-^" "x(length$')."/\n"^ge&chopআমার গণনা অনুসারে কমান্ড লাইনের বিকল্পগুলির জন্য + 2 অক্ষর = 40। পেস্টবিন.
com

@ মানাটওয়ার্ক বাস্তবে, $.==1বা $.<2বাদ দেওয়া যেতে পারে কারণ কেবল প্রথম লাইনে রয়েছে-
গওথাম

হ্যাঁ, আপনি সেখানে কী করেছেন তা আমি দেখেছি। আর আমি অবাক হয়ে গেলাম। উপায় দ্বারা, আপনি পরিবর্তে কোডটিতে একটি আক্ষরিক লাইন মোড়ানো ব্যবহার করতে পারেন \n
manatwork

ডোহ। একটি সংক্ষিপ্ততর খুঁজে s^-^$'=~y/-/ /r."/\n"^ge&chomp
পেয়েছে

2

পাইথ, 26 23 বাইট

jXK.z0jm+*\ t-lhKd\/lhK

ইশ। অবশ্যই খাটো হতে পারে; এটির উপর এখনও কাজ করতেছি.


2

পাইথন 3, 76 বাইট

f=open(0)
w=len(f.readline())
while w:w-=1;print(' '*w+'/')
print(f.read())
  1. প্রথম ইনপুট লাইনের দৈর্ঘ্য পান।
  2. /শূন্যস্থানগুলির ক্রমবর্ধমান সংখ্যার দ্বারা প্রিন্ট করা লাইনগুলি ।
  3. বাকিটা stdinসোজা টানুন stdout

সম্পাদনা: আমি সবেমাত্র লক্ষ্য করেছি যে আমার কোড @ ডানিসের সংক্ষিপ্ত পাইথন 3 কোডের @ ডেনিসের মন্তব্য সম্পাদনার সাথে প্রায় একই রকম, কেবলমাত্র পার্থক্যটি stdinএটি একটি ভেরিয়েবলের মধ্যে সংরক্ষণের পরিবর্তে প্রত্যক্ষের বাকী মুদ্রণযোগ্য । দুর্দান্ত মন!



1

পাইথন 2, 100 বাইট

def o(b):
 m=b.split('\n')[1:]
 print"\n".join(["/".rjust(i)for i in range(len(m[0]),0,-1)]+m)

কোনও ফাংশন সংজ্ঞায়িত করে oযা কোনও স্ট্রিংকে তার ইনপুট হিসাবে গ্রহণ করে। (পুরো প্রোগ্রামটি প্রশ্নের মধ্যে নির্দিষ্ট করা হয়নি)।


1

পাওয়ারশেল, 55 বাইট

$d,$b=$args-split"`n";($d.length-1)..0|%{" "*$_+"/"};$b

$argsস্ট্রিং হিসাবে ইনপুট নেয় , -splitনিউলাইনগুলিতে `n ( রেফারেন্স লিঙ্ক ) , প্রথম লাইনটিকে $d(স্ট্রিং হিসাবে) এবং বাকীগুলিতে ($b স্ট্রিংগুলির অ্যারে হিসাবে) সংরক্ষণ করে। তারপরে আমরা lengthপ্রথম রেখার (বিয়োগ 1) এর থেকে লুপ করব 0এবং প্রতিটি পুনরাবৃত্তি আউটপুট যে স্পেসের সংখ্যা প্লাস এ /। শেষ অবধি, আউটপুট $b(বাকী ইনপুট স্ট্রিং) যা ডিফল্টরূপে প্রতি লাইনে এক করে আউটপুট দেয়।

উদাহরণ রান

PS C:\Tools\Scripts\golfing> .\help-me-open-the-box.ps1 "----`n|  |`n|__|"
   /
  /
 /
/
|  |
|__|

Line

1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 56 বাইট

a=>a[b="replace"](/-+/,c=>c[b](d=/-/g,`
$'/`))[b](d,' ')

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

@ নীল এর উত্তরের মন্তব্য হিসাবে লেখা উচিত তবে আমি এখনও মন্তব্য তৈরি করতে পারি না


হ্যালো এবং পিপিসিজিতে আপনাকে স্বাগতম। আমি ধরে নিলাম আপনি নীলের উত্তরটির অর্থ হ'ল যা আপনি আরও গল্ফ করেছেন। আপনি তাদের উত্তরে একটি লিঙ্ক যুক্ত করতে এবং ক্রেডিট দেওয়ার জন্য লেখকের নাম সংশোধন করতে চাইতে পারেন।
জোনাথন ফ্রেচ


1

05 এ বি 1 ই (উত্তরাধিকার) , 9 বাইট

g'/1.Λ|»»

এটি অনলাইন চেষ্টা করুন! (লিগ্যাসি-শুধুমাত্র)

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

g'/1.Λ|»» – Full program. Takes input from STDIN.
g         - Length. Only takes the first line into account.
 '/       – Push a slash character, "/".
   1.Λ    – And diagonally up-right, draw a line of slashes of the given length.
      |»  – Push the remaining inputs (all other lines) joined on newlines.
        » – Then join the stack on newlines.

1

কাঠকয়লা , 14 বাইট

↙L§⪪θ¶⁰M→✂⪪θ¶¹

এটি অনলাইনে চেষ্টা করুন (ভার্বোজ) অথবা এটি অনলাইনে চেষ্টা করুন (খাঁটি)

ব্যাখ্যা:

নতুন লাইনের মাধ্যমে ইনপুটটি বিভক্ত করুন, প্রথম লাইনের দৈর্ঘ্য নিন এবং উপরে-ডান থেকে নীচে-বামে সেই দৈর্ঘ্যের একটি লাইন প্রিন্ট করুন:

Print(:DownLeft,Length(AtIndex(Split(q,"\n"),0)))
↙L§⪪θ¶⁰

একবার ডানদিকে যান:

Move(:Right)
M→

নতুন লাইনের মাধ্যমে ইনপুটটি আবার বিভক্ত করুন এবং প্রথম আইটেমটি সরিয়ে ফেলুন এবং যা ছাপিয়ে গেছে তা মুদ্রণ করুন:

Slice(Split(q,"\n"),1)
✂⪪θ¶¹

(দ্রষ্টব্য: ইনপুটকে ভেরিয়েবলের মধ্যে নিউলাইন দ্বারা বিভক্ত করা (যেহেতু আমি এটি উপরে দু'বার করেছিলাম) কিছুটা আলাদা পদ্ধতি ব্যবহার করে 1 বাইট দীর্ঘ 14 ডি বাইট ( @ নীলকে ধন্যবাদ ):
≔⮌⪪θ¶θ↙L⊟θM→⮌θ এটি অনলাইনে চেষ্টা করুন ( ভার্বোজ ) বা অনলাইনে চেষ্টা করুন (খাঁটি) )।


আপনি যদি নতুন লাইনের মাধ্যমে ইনপুট বিভক্ত করে দেন তবে আপনি প্রথম লাইনটি পপআপ করতে পারবেন যা আপনাকে 14 বাইটে নামিয়ে আনবে: অনলাইনে চেষ্টা করে দেখুন!
নিল

0

জাভাস্ক্রিপ্ট ES6, 106 বাইট

q=>(q=q.split`
`,n=q[0].length,eval('for(i=0,r="";i<n;i++)r+=" ".repeat(n-i-1)+"/\\n"'),r+q.slice(1).join`
`)

যথেষ্ট সরল: প্রথম লাইনের দৈর্ঘ্য পাওয়া, পিছন দিয়ে একটি ব্যবধানযুক্ত ত্রিভুজ তৈরি করা /এবং এটি আসলটিতে কাটা এবং সংযুক্ত করা।

এটি পরীক্ষা! (কেবল ES6:( )


2
ফর্ম্যাটিং ব্যবহার করে আপনি এক্সকেসিডি সমস্যা সমাধান করেছেন see চালাক।
Kroltan

.repeat(n-i-1)=>.repeat(n+~i)
ডাউনগোট

0

পাইথন 2.7, 120 122 অক্ষর

fমূল / বদ্ধ বাক্সের সাথে একটি ফাইলের প্রয়োজন , আউটপুটটি খোলা একটি। এই ধারণার জন্য @ মনস্টারকে চিয়ার্স ... পরে বহু-লাইন ইনপুটটি বের করার চেষ্টা করবে এবং এটি আরও ছোট হবে কিনা তা দেখার চেষ্টা করবে।

for l in open('f').readlines():
 if l[1]==('-'):
  for x in range(1,len(l)):print(' '*(len(l)-x+1)+'/')
 else:print l[:-1]

সম্পাদন করা

  • কেবল লক্ষ্য করেছেন যে বামদিকের /সামনে একটি জায়গা রয়েছে; +2 বাইট

0

রুবি, 59 টি অক্ষর

(57 টি অক্ষরের কোড + 2 অক্ষর কমান্ড লাইন বিকল্পগুলি))

s=""
$_=$_.chars.map{(s<<" ")[1..-1]+?/}.reverse*$/if$.<2

নমুনা রান:

bash-4.3$ ruby -ple 's="";$_=$_.chars.map{(s<<" ")[1..-1]+?/}.reverse*$/if$.<2' <<< $'-------\n|     |\n|_____|'
      /
     /
    /
   /
  /
 /
/
|     |
|_____|

0

বাশ, 129 টি অক্ষর

aবদ্ধ বাক্সের সাথে ডাকা একটি ফাইল প্রয়োজন , স্টডআউট আউটপুট।

for i in $(seq `cat a|awk 'NR==1{print length($1)-1}'` -1 1);{ for j in `seq 1 $i`;{ printf " ";};echo "/";};echo "/";tail -n2 a

sedস্টিডিন এবং পাইপ ব্যবহার করে এবং এটি ব্যবহার করে এটি আরও খাটো করা সম্ভব হতে পারে ।


ভাল প্রথম গল্ফ উত্তর। কিছু সাধারণ সিনট্যাক্স পরিবর্তন পরামর্শ:for i in $(seq `awk 'NR<2&&$0=length-1' a` -1 1);{ for j in `seq 1 $i`;{ printf \ ;};echo /;};echo /;tail -n2 a
manatwork

0

পিএইচপি, 127 টি অক্ষর

$s=$argv[1];$l=strlen(strtok($s,"\n"));for($i=0;$i<$l;$i++)$s=preg_replace("/-/","\n".str_repeat(" ",$l-$i-1)."/",$s,1);echo$s;

অবরুদ্ধ সংস্করণ:

$s=$argv[1];
$l=strlen(strtok($s,"\n"));

for($i=0;$i<$l;$i++){
    $v="\n".str_repeat(" ",$l-$i-1)."/";
    $s=preg_replace("/-/",$v,$s,1);
}
echo $s;

আপনার কোডে একটি টাইপ রয়েছে: আপনি সিগিল মিস করেছেন $argv। আপনি প্রয়োগ করতে পারেন এমন কয়েকটি ছোট ছোট কৌশল রয়েছে: $l=strlen(strtok($s=$argv[1],"↵"));while($l)$s=preg_replace("/-/","↵".str_repeat(" ",--$l-$i)."/",$s,1);echo$s;(আপনার
কোডটিতে

0

পাইথন, 125 বাইট (বক্স ছাড়াই 110)

i="\n---\n| |\n|_|"
l,b,r=i.count("-"),i.split('\n'),range
for x in r(1,l):print" "*(l-x)+"/"
for x in r(2,len(b)):print b[x]

এটি সংক্ষিপ্ত করার জন্য কারও যদি ধারণা থাকে তবে দয়া করে আমাকে জানান!


0

ওওক, 47 46 টি অক্ষর

(৪৪ টি অক্ষরের কোড + ২ টি অক্ষরের কমান্ড লাইন বিকল্প)

/-/{OFS=RS;for(i=NF;i;i--){$i=s"/";s=s" "}}1

নমুনা রান:

bash-4.3$ awk -F '' '/-/{OFS=RS;for(i=NF;i;i--){$i=s"/";s=s" "}}1' <<< $'-------\n|     |\n|_____|'
      /
     /
    /
   /
  /
 /
/
|     |
|_____|



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