এটি একটি বিজোড় পর্বত!


10

এর শীর্ষে বিজোড় সংখ্যা সহ ছোট পর্বতের একটি শৃঙ্খলা প্রদর্শন দ্বারা অনুপ্রাণিত ! @ সাইগমেই দ্বারা

পাহাড়ের চেইন কেন থাকবে যখন আপনি একটি বিশাল আকারের করতে পারেন?

এমন একটি প্রোগ্রাম তৈরি করুন যা ইনপুট নম্বর নেয় এবং ইনপুট নম্বর পর্যন্ত প্রতিটি বিজোড় সংখ্যা সহ একটি পর্বত মুদ্রণ করে।

(যেখানে "দক্ষিণ পশ্চিম" এর অর্থ directly below and to the leftএবং "দক্ষিণ পূর্ব" এর অর্থ directly below and to the right)

প্রতিটি সংখ্যার এর /দক্ষিণ পশ্চিম এবং \দক্ষিণ পূর্ব থাকবে have এটি 1শীর্ষে থেকে শুরু হয় এবং পরবর্তী সংখ্যাটি a এর /দক্ষিণ বা পূর্ব পূর্বে যাবে \। পরের সংখ্যাটি সবচেয়ে কাছের এবং বামে সবচেয়ে কাছের লাইনে যাবে।

মাল্টিডিজিট নম্বরের জন্য, কেবল প্রথম সংখ্যার সরাসরি অন্য পরে অঙ্কের সাথে সঠিক জায়গায় থাকা দরকার এবং কেবল প্রথম অঙ্কটি হওয়া উচিত \এবং /এটি থেকে বেরিয়ে আসা উচিত।

1 বা 2 পর্যন্ত পর্বতটি ঠিক:

 1
/ \

3 বা 4 পর্যন্ত একটি পর্বত ঠিক:

   1
  / \
 3
/ \

25 বা 26 এর জন্য:

         1
        / \
       3   5
      / \ / \
     7   9   11
    / \ / \ / \
   13  15  17  19
  / \ / \ / \ / \
 21  23  25
/ \ / \ / \

শেষ দুটি লাইন যেখানে ইনপুটটি 121:

 111 113 115 117 119 121
/ \ / \ / \ / \ / \ / \

এবং শেষ দুটি লাইন যেখানে ইনপুটটি 1019:

 993 995 997 999 1001100310051007100910111013101510171019
/ \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \

আপনি ধরে নিতে পারেন যে ইনপুটটি 0 এর চেয়ে বেশি এবং 10001 (একচেটিয়া) এর চেয়ে কম হবে।

ট্রেলিং স্পেসগুলি ঠিক আছে এবং যতক্ষণ না সমস্ত লাইনে একই থাকে ততক্ষণ অতিরিক্ত অগ্রণী স্থানগুলি ঠিক আছে s

এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি জিতে।

আপনার আরও পরীক্ষার কেসগুলির প্রয়োজন হলে এটির একটি অদম্য উত্তর অনলাইনে পাওয়া যাবে (repl.it অন পাইথন ইন)।


যদি ইনপুটটি 101 এর চেয়ে কম হয় তবে আপনার কেন 121 টেস্টকেস রয়েছে?
LegionMammal978

@ লিজিওনম্যামাল978 মানে 10001, এখনই স্থির। ধন্যবাদ!
আর্টিয়ার

1
আসলটির চেয়ে
শক্ত

উত্তর:


5

05AB1E , 54 52 47 46 বাইট

ÅɹL£D€g__ÏRv"/ \ "yg×N·©úˆyvy4yg-ð×}J®>úˆ}¯R»

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

ব্যাখ্যা

                                                # implicit input n
ÅÉ                                              # push a list of uneven numbers up to input
  ¹L£                                           # divide into sublists of length 1,2,3...n
     D€g__Ï                                     # remove empty sublists
           R                                    # reverse list
            v                                   # for each sublist
             "/ \ "                             # push the string "/ \ "
                   yg×                          # repeat it len(sublist) times
                      N·©ú                      # prepend (sublist index)*2 spaces
                          ˆ                     # add to global list
                           yv                   # for each number in sublist
                             y4yg-ð×            # prepend spaces until length is 4
                                    }           # end inner loop
                                     J          # join to string
                                      ®>ú       # prepend (sublist index)*2+1 spaces
                                         ˆ      # add to global list
                                          }     # end outer loop
                                           ¯    # push global list
                                            R   # reverse it
                                             »  # join rows by space and columns by newline
                                                # implicitly print

আমি 5 বাইট সংরক্ষণ করতে পারতাম ÅɹL£D€g__ÏRv"/ \ "yg×N·©úˆy4jJðÛ®>úˆ}¯R»যদি আমি জে এর জন্য যে বাগফিক্সটি চাপতাম তবে বেশ কয়েক সপ্তাহ আগে লিখেছিলাম : /


3

ব্যাচ, 335 বাইট

@echo off
set i=
set/ac=w=0
:l
set i=  %i%
set/aw+=2,c+=w
if %c% lss %1 goto l
set s=
set t=
set/ac=w=1
for /l %%a in (1,2,%1) do call:c %%a
echo  %s%
echo%t%
exit/b
:c
if not %c%==0 goto g
echo%i%%s%
set i=%i:~2%
echo%i%%t%
set s=
set t=
set/aw+=1,c=w
:g
set n=%1   (three trailing spaces)
set s=%s%%n:~0,4%
set t=%t% / \
set/ac-=1

@ আর্টিয়র আমি প্রায় নিশ্চিত cmd /Q /C file.bat3 টি অতিরিক্ত বাইট গণনা করি , তবে এটি এর চেয়ে আরও ভাল @echo off। আপনার এটি ব্যাচের টিপস প্রশ্নে পোস্ট করা উচিত।
নিল

3

পাইথন 2, 160 149 143 বাইট

11 বাইট সংরক্ষণের জন্য টিফেল্ড এবং 6 বাইট সংরক্ষণের জন্য আর্টিয়ারকে ধন্যবাদ

x=range(1,input()+1,2);y=[];i=1
while x:y+=[''.join('%-4d'%j for j in x[:i]),'/ \ '*len(x[:i])];x=x[i:];i+=1
while y:print' '*~-len(y)+y.pop(0)

আপনি 10-বাইটের পরিবর্তে i=len(y)এবং এর for l in y:print' '*i+l;i-=1পরিবর্তে করতে পারেনfor i,l in enumerate(y):print(len(y)-i-1)*' '+l
TFeld

এছাড়াও আমি মনে করি যে আপনি স্থান পরিবর্তন \\ করার \ আগে থেকেই এটি পরিবর্তন করতে পারবেন
টিফিল্ড

আপনি শেষ 2 লাইন এ পরিবর্তন করতে পারেন while y:print' '*-~len(y)+y.pop(0)। এটি 3 বাইট সংরক্ষণ করে।
আরটিয়ার

1
@ রড ওফস ... আমি %-4d4 এর মধ্যে এটিকে ন্যায্যতা
বানাতে চাইছিলাম

1
@ আর্টির ওয়াহ, বাম ন্যায়সঙ্গত করার জন্য এই নেতিবাচক মানটি আমার কাছে নতুন: ডি, দুর্দান্ত কৌশল
রোড

2

পার্ল, 134

-pবিকল্পের জন্য 133 বাইট +1

 $l="/ \\ ";$t=" ";while($c++<$_) {$t.=sprintf'%-4d',$c++;$v.=$l;if ($i++>=$j){$t=~s/^/  /gm;$t.="
  $v
 ";$i=$v="";$j++}}$_="$t
$v";

ফর্ম্যাট সংস্করণ (মূল গল্ফযুক্ত সংস্করণ n এর পরিবর্তে সত্যিকারের "নতুন লাইনগুলি" ব্যবহার করে)

$l="/ \\ ";
$t=" ";
while($c++<$_) {
   $t.=sprintf'%-4d',$c++;
   $v.=$l;
   if ($i++>=$j){
      $t=~s/^/  /gm;
      $t.="\n  $v\n ";
      $i=$v="";
      $j++
   }
}
$_="$t\n$v";

2

বাশ, 425 বাইট

f() { k=0; o=""; l=1; for (( c=1; c<=$1; c++ )); do o="$o$c "; let c++ k++; if [ $l -eq $k ]; then o=$o"\n"; k=0; let l++; fi; done; s=$[$(echo -e $o | wc -l)*2-1]; p() { for c in $(seq $1); do echo -n " "; done }; IFS=$'\n'; for n in $(echo -e $o); do unset IFS; p $s; let s--; for w in $n; do echo -n "$w"; p $[4-${#w}]; done; echo; p $s; for c in $(seq $(echo $n|wc -w)); do echo -n "/ \ "; done; echo; let s-- j++; done }

বিন্যাসকৃত:

l=1
k=0
o=""
for (( c=1; c<=$1; c++ ))
do
        o="$o$c "
        let c++ k++
        if [ $l -eq $k ]
        then
                o=$o"\n"
                k=0
                let l++
        fi
done
s=$[$(echo -e $o | wc -l)*2-1]
p() {
        for c in $(seq $1)
        do
                echo -n " "
        done
}
IFS=$'\n'
for n in $(echo -e $o)
do
        unset IFS
        p $s
        let s--
        for w in $n
        do
                echo -n "$w"
                p $[4-${#w}]
        done
        echo
        p $s
        for c in $(seq $(echo $n|wc -w))
                do echo -n "/ \ "
        done
        echo
        let s-- j++
done
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.