কিছু নম্বর আনজিপ করুন


21

আপনার কাজটি এমন একটি প্রোগ্রাম বা ফাংশন তৈরি করা যা 10 লাইনের দৈর্ঘ্যের একটি জিপার তৈরি করে। জিপারের প্রতিটি লাইন দুটি ড্যাশ দ্বারা প্রতিনিধিত্ব করা হয় --:

--
--
--
--
--
--
--
--
--
--

প্রোগ্রাম / ফাংশনটি ইনপুট হিসাবে শতাংশ (10 দ্বারা বিভাজ্য) নেবে এবং ফলাফল আউটপুট থেকে শীর্ষে থেকে জিপার "আনজিপড" (ড্যাশগুলি পৃথক করা) হবে, 1-সূচকযুক্ত, সর্বনিম্ন স্তরটি 2 বার পুনরাবৃত্তি করে, সমস্ত পূর্ববর্তী স্তরগুলি 4, 6, 8, ... ইত্যাদি পুনরাবৃত্তি করে। বার, জিপার নীচে কেন্দ্রে রাখার সময়।

উদাহরণ

>>10%
-11-
 --
 --
 --
 --
 --
 --
 --
 --
 --

>>50%
-1111111111-
 -22222222-
  -333333-
   -4444-
    -55-
     --
     --
     --
     --
     --

>>100%
-11111111111111111111-
 -222222222222222222-
  -3333333333333333-
   -44444444444444-
    -555555555555-
     -6666666666-
      -77777777-
       -888888-
        -9999-
         -10-

ইনপুট (শতাংশ) ফর্ম্যাট করা যেতে পারে তবে আপনি পছন্দ করেন (50%, .5, 50, 5 [শূন্য অন্তর্ভুক্ত], ইত্যাদি), এবং এটি সর্বদা 0 থেকে 100 এবং 10 দ্বারা বিভাজ্য হবে উদাহরণগুলি আপনার আউটপুটটিতে অবশ্যই সংরক্ষণ করা উচিত।


ইনপুট কি কখনও হতে পারে 0%? আমাদের কি 10 দ্বারা বিভক্ত ইনপুট নিতে দেওয়া হচ্ছে? যেমন পরিবর্তে 50%, পেতে 5?
ডিজেএমসিএমহেম

1
ইনপুট (শতাংশ) ফর্ম্যাট করা যেতে পারে তবে আপনি চান (50%, .5, 50), এটা কি ঠিক হতে পারে 5?
লুইস মেন্ডো

@ ড্রগ্রাইনইগস্যান্ড আইরনম্যান ইনপুটটি 0% হতে পারে এবং আপনি সবচেয়ে সুবিধাজনক বিন্যাসে ইনপুটটি নিতে পারেন।
অ্যাটলজিস্ট

@ লুইস মেন্ডো, হ্যাঁ, আমি এটিকে প্রশ্নের মধ্যে সম্পাদনা করব, ধন্যবাদ।
অ্যাটলোলজিস্ট

পেছনের পরিবর্তে একটি অগ্রণী লাইন ব্রেক কি গ্রহণযোগ্য? পরম প্যাডিং গ্রহণ করা হয়?
তিতাস

উত্তর:


10

পাইথন 2 - 184 151 146 বাইট

def r(n):
  n/=10
  for i in range(1,11):
    if n<0:print"%s--"%p
    elif i>9:print" %s-10-"%p
    else:p=" "*~-i;print"%s-%s-"%(p,`i`*2*n);n-=1

শেষ নম্বর কান্ডা আমার সাথে কিছুটা গোলমেলে গেল। আমি যদি বিবৃতিটি পরে দেখি তবে আমি দ্বিতীয়টি সরিয়ে দিতে সক্ষম হব।

সম্পাদনা: 3 বাইট অপসারণের জন্য mxomb007 থেকে Thx। প্রচুর এবং প্রচুর বাইটগুলি সরিয়ে ফর্ম্যাট করার টিপসের জন্য চার্রেডগ্রাসকে ধন্যবাদ! :-D আরও দু'টি বাইট সাহায্য করার জন্য দ্য বাইকিংভাইককে ধন্যবাদ!


1
i>9পরিবর্তে ব্যবহার করুন i==10এবং স্থানটি সরান range(1, 11)
mbomb007

1
অজগরটিতে গল্ফ করার জন্য ছোট্ট টিপ: আপনি নিজের বক্তব্যকে এক লাইনে সংকুচিত করে হোয়াইটস্পেস থেকে প্রচুর বাইটগুলি কেটেছিলেন। উদাহরণস্বরূপ শেষ 3 লাইন হয়ে যেতে পারে p=" "*(i-1);print"%s-%s-"%(p,str(i)*2*n);n-=1
Charredgrass

ধন্যবাদ! এটি এর সাথে অনেকটাই সহায়তা করে এবং আমি অবশ্যই ভবিষ্যতের গল্ফিংয়ের বিষয়টি মনে রাখব
জেরেমি

1
(i-1)শেষ লাইনে প্রতিস্থাপন করে আপনি 2 বাইট মুণ্ডন করতে পারেন ~-i। এটি অপারেটর অগ্রাধিকারের সুবিধা গ্রহণ করে এবং অস্বীকারের পরে কিছুটা ফ্লিপ করা বিয়োগের সমান 1
TheBikingViking

range(1,11)তারপরে ব্যবহার করার কী লাভ (i-1)?
ফাঁস নুন

10

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

n=input()
x=0
exec"print' '*x+'-'+`x+1`*(n-x<<1-x/9)+'-';x=min(x+1,n);"*10

execডানিসকে ধন্যবাদ, একটি লুপ দুটি করে দুটি বাইট সংরক্ষণ করা হয়েছে।

সম্পাদনা: আমি কিছুটা ভিন্ন পদ্ধতি নিয়েছি এবং আরও দুটি বাইট সংরক্ষণ করেছি saved


1
আপনি প্রতিস্থাপন বিন্যাস স্ট্রিং ব্যবহার করে 2 বাইট সংরক্ষণ করতে পারবেন '-'+`x+1`*(n-x<<1-x/9)+'-'মধ্যে execদিয়ে লুপ '-%s-'%`x+1`*(n-x<<1-x/9)
আর কাপ,

না, আমি কাছাকাছি বাম বন্ধনী প্রয়োজন চাই `x+1`*(n-x<<1-x/9)
লিন

4

পাওয়ারশেল ভি 2 +, 130 120 116 110 বাইট

param($n)$i=0;10..1|%{" "*$i+(("-"+("$($i+1)"*([math]::Max($n-10+$_,0))*2)),"-10")[$n-$_-eq9]+"-";$i+=$i-ne$n}

1 সম্পাদনা করুন - $xভেরিয়েবলটি মুছে ফেলে এবং স্ট্রিংটি কীভাবে তৈরি করা হয় সামান্য পুনরায় করে গল্ফড 10 বাইট ।
সম্পাদনা 2 - ইনপুট কীভাবে হয় তা পুনরায় করে এবং $iপ্রতিটি লুপ কীভাবে গণনা করা হয় তা পুনরায় করে আরও 4 টি বাইট গল্ফ করেছেন ।
3 সম্পাদনা করুন - ওপি দ্বারা 6 বাইট সংরক্ষিত হয়েছে ইনপুট হিসাবে এটির অনুমতি দেয় 0..10, তাই 10 দ্বারা ভাগ করার দরকার নেই।

আশ্চর্যরকম কঠিন!

যেমন ইনপুট লাগে 1, 5ইত্যাদি সংরক্ষণ করা $n। সহায়ক $iভেরিয়েবল সেট করুন (খুব বিরল সময়ের মধ্যে একটি যা ভেরিয়েবলকে 0পাওয়ারশেলে আরম্ভ করা প্রয়োজন ) এবং তারপরে একটি লুপ শুরু 10হয় 1

প্রতিটি পুনরাবৃত্তি, আমরা আমাদের স্ট্রিংটি সমান সংখ্যক স্পেস দিয়ে শুরু করি $i, এর পরে সিউডো-টার্নারি করি (... , ...)[]। সিউডো-টেরিনারি এর ভিতরে আমরা -কয়েকটি সংখ্যার (যেটির উচ্চতর $n-10+$_বা 02 দ্বারা গুণিত) বা একটি স্ট্রিং দিয়ে একটি স্ট্রিং -10নির্বাচন করি - নির্বাচনটি আমরা দশম পুনরাবৃত্তিতে থাকি কি না তার উপর ভিত্তি করে এবং আমাদের ইনপুটটি ছিল 100। আমরা চূড়ান্তভাবে একটি ফাইনাল সহ -। সেই ফলস্বরূপ স্ট্রিংটি পাইপলাইনে স্থাপন করা হয়।

অবশেষে, আমরা বৃদ্ধি পেয়েছি $i, এবং এটি সত্যিই কৃপণ। আমরা বাইনারি-কাস্ট-টু-ইনট ট্রিকটি ব্যবহার করে কেবলমাত্র বৃদ্ধি $iনা হওয়া অবধি বাড়িয়ে তোলার জন্য $nএবং তারপরে এটি একই মান রেখে চলেছি। এটি নিশ্চিত করে যে আমরা উপযুক্ত পর্যায়ে জিপার ইনডেন্টেশনের "শেষে" পৌঁছেছি।

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

উদাহরণ

PS C:\Tools\Scripts\golfing> .\unzip-some-numbers.ps1 70
-11111111111111-
 -222222222222-
  -3333333333-
   -44444444-
    -555555-
     -6666-
      -77-
       --
       --
       --

PS C:\Tools\Scripts\golfing> .\unzip-some-numbers.ps1 100
-11111111111111111111-
 -222222222222222222-
  -3333333333333333-
   -44444444444444-
    -555555555555-
     -6666666666-
      -77777777-
       -888888-
        -9999-
         -10-


3

পাইথন, 95 84 বাইট

আমি জানতাম না যে লাম্বদাস আইনী ছিলেন, ধন্যবাদ @ গ্রীন ডিম এবং আয়রন ম্যান

lambda p:'\n'.join(' '*min(p,l)+'-'+(2-(l==9))*(p-l)*str(l+1)+'-'for l in range(10))

1
আরে, দুর্দান্ত প্রথম উত্তর! আপনি এটি 2 বাইট সংরক্ষণের জন্য তালিকা বোধ থেকে বাইরে সরিয়ে joinনিতে পারেন , সরাসরি কোনও জেনারেটর নিতে পারেন।
মরগান থ্রাপ

2
আপনি মুদ্রণের পরিবর্তে ল্যাম্বদা করতে পারেন। মরগানের পরামর্শ সহ: lambda p:'\n'.join(' '*min(p,l)+'-'+(2-(l==9))*(p-l)*str(l+1)+'-'for l in range(10))(৮৪ বাইট)
ডিজেএমসিএমহেম


1

রুবি, 74 বাইট

প্রশ্নটিতে বর্ণিত অন্তর্নিহিত শূন্য বিন্যাস ব্যবহার করে, তাই 40%f[4] বেনাম ফাংশন নির্ধারিত হলে হয় f। যদি পূর্ণ শতাংশের প্রয়োজন হয় তবে +6 বাইটn/=10;

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

->n{10.times{|i|puts' '*[i,n].min+"-#{i>8?10:(i+1).to_s*2*(n-i)if i<n}-"}}

1

পাইথন 3, 98, 90, 87 , 85 বাইট।

ইতিমধ্যে 10 দ্বারা বিভক্ত সংখ্যাটি নিয়েছে আমি সম্ভবত প্যারেনগুলির কয়েকটি মুছে ফেলতে পারি তবে এটি পুরোপুরি গল্ফ করা বন্ধ pretty

lambda n:'\n'.join(' '*min(i,n)+'-%s-'%(str(i+1)*(n>i>8or(n-i)*2))for i in range(10))


1

জাভাস্ক্রিপ্ট এস 7, 105 বাইট

A=>[...Array(10)].map((a,i)=>' '.repeat((d=A<i)?A:i)+('-'+(i+1+'').repeat(d?0:i<9?2*(A-i):1)+'-')).join`
`

সাথে কল

f=A=>[...Array(10)].map((a,i)=>' '.repeat((d=A<i)?A:i)+('-'+(i+1+'').repeat(d?0:i<9?2*(A-i):1)+'-')).join`
`


f(10)
f(5)
f(0)

The program/function ...- স্নিপেট নয়
তিতাস

1
আপনি যদি \nএকটি আসল নিউলাইন দিয়ে প্রতিস্থাপন করেন তবে আপনি একটি বাইট সংরক্ষণ করতে পারেন।
মামা ফান রোল

1
@ টিটাস আপনি কি সম্পর্কে কথা বলছেন? এই "স্নিপেট" একটি ফাংশন।
নিকক নিউম্যান

1
আহ ঠিক. ES7, আমি ভুলে গেছি।
তিতাস

@ মামাফুনরোল আমার কাছে তা ছিল, তবে "" মুড়ে ফেলা এবং দৈর্ঘ্য করতে পারি না তাই আমি যে 100% আত্মবিশ্বাসী ছিলাম তা পরিষ্কার ছিলাম না - আমি এতে যুক্ত করব :)
চার্লি উইন

1

পাইথন 2.7, 113 108 77 বাইট


এক্স ইন রেঞ্জ (0,10 ) এর জন্য এন = ইনপুট () :
ভি = স্ট্র (এক্স + 1) * (এনএক্স) 2
যদি x
এন> 89: ভি = '10 '
মুদ্রণ' '* মিনিট (এক্স, এন) + '-' + V + + '-'

প্রথমবার গল্ফ খেলছি। চলতে থাকবে, এটি <100 পাওয়ার চেষ্টা করুন।
অনুমান ইনপুট 1-10।

সম্পাদনা: @ লিক্যুনের উত্তর (ধন্যবাদ) থেকে কিছু কৌশল ব্যবহৃত হয়েছে, তারপরে এটি আরও কিছুটা সঙ্কুচিত করে পেয়েছে ... মূলত একই উত্তর: / স্ট্রিং রূপান্তর সম্পর্কে জানেন না, এবং 2 - বুলিয়ান আমাকে জানাতে দিন if বিবৃতিটি থেকে মুক্তি দিন, যা আমাকে পুরো ভেরিয়েবল থেকে মুক্তি দেয়। খুব ঠান্ডা.

আমার সংস্করণ:

n=input()
for x in range(10):print' '*min(x,n)+'-'+`x+1`*(n-x)*(2-(x>8))+'-'

সুন্দর উত্তর, এবং সাইটে আপনাকে স্বাগতম! আপনি 4
টির

আসলে, আপনি এটিকে আরও ছোট করে তুলতে পারেন:n=input(); for x in range(0,10):print' '*min(x,n)+'-'+('10'if x*n>89 else str(x+1)*(n-x)*2)+'-'
ডিজেএমসিএমহেম


0

পাইথন 2.7, 110 99 95 91 বাইট:

G=input();i=1;exec"print' '*[~-i,G][i>G]+'-%s-'%[`i`*(2*-~G-i*2),'10'][(i>9)*G>9];i+=1;"*10

একটি সম্পূর্ণ প্রোগ্রাম যা অন্তর্ভুক্ত ব্যাপ্তিতে কোনও পূর্ণসংখ্যার দ্বারা ইনপুট নেয় [1,10], যেখানে 10অর্থ 100%এবং 1উপায় 10%। সম্ভবত আরও কিছুটা গল্ফ করা যেতে পারে।

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


0

পিএইচপি 5.3, 92 91 বাইট

<?for(;$i<10;$i++)echo'
'.str_pad('-'.str_repeat($i+1,$n>9&&$i>8?:($n-$i)*2).'-',22,' ',2);
  • পিএইচপি 5.3 সঙ্গে register_globals=1এবং short_open_tags=1(এবং error_reporting=0)
    CLI কল সঙ্গেphp-cgi -f <filename> n=<number>
  • 0 থেকে 10 পর্যন্ত সংখ্যা

  • ওয়েব ব্রাউজারে কল করতে <scriptpath>?n=<number>: প্রিপেন্ড করুন<pre>
  • 4.0.1 এর জন্য <পিএইচপি <5.3: এর ?:সাথে প্রতিস্থাপন করুন?1: (+1) এর
  • পিএইচপি> = 5.4 এর জন্য: প্রথমটি প্রতিস্থাপন করুন $n সঙ্গে ($n=$_GET[n])(+11)

একটি ফাংশন হিসাবে ungolfed (কোনও পিএইচপি> = 4.0.1)

function unzip($n) // $n from 0 to 10
{
    for($i=0;$i<10;$i++)                // $i = line number -1
        $s.='
'.str_pad(                              // pad the result of the following on both sides
            '-'.                            // prepend '-'
            str_repeat($i+1,                // print line number
                ($n>9&&$i>8 ? 1             // in tenth line, if $n is 10: once
                : ($n-$i)*2)                    // else  2*($n-$i) times
            ).'-'                           // append '-'
            , 22,' ', STR_PAD_BOTH);    // pad to 22 width with SPC on both sides
    return $s;
}

পরীক্ষা স্যুট

echo'<table border=1><tr>';
for($i=0;$i<11;$i++)echo'<th>',$i*10,'%</th>';
echo'</tr><tr>';
for($i=0;$i<11;$i++)echo'<td><pre>', unzip($i), '</pre></td>';
echo '</table>';

এখন এটি আমার কাছে নতুন: পিএইচপি জাভাস্ক্রিপ্ট মারছে।
আমার মনে হয় এই পদ্ধতির প্রতি মিনিটে গল্ফ রয়েছে।


STR_PAD_BOTHএটি কী, কে অ্যান্ড আর সি? আমরা কি #defineপিএইচপি-তে জিনিসগুলি করি? :-)
বিড়াল

@ কেট: হ্যাঁ, পিএইচপি-তে প্রকৃত সংজ্ঞা রয়েছে। তবে কেবল স্থির; সি এর মতো নয়
তিতাস


0

পার্ল, 122 বাইট

$k=<>;for(my $i=0;$i++<10;){$s="-"."$i"x($k/10-$i+1);$p=length $s;$l=$l>$p?$l:$p;printf "%${l}s%s\n",$s,scalar reverse $s}

0

কমন লিস্প (লিসপার্কস), 314 বাইট

(defun f()(let((s(string(read))))(let((n(/(parse-integer(subseq s 0(1-(length s))))10)))(if(> n 0)(progn(dotimes(r n)(progn(dotimes(c r)#1=(format t" "))(format t"-")(if(=(1+ r)10)(format t"10")(dotimes(j(* 2(- n r)))(format t"~S"(1+ r))))(format t"-~%")))(dotimes(d(- 10 n))(dotimes(c n)#1#)(format t"--~%")))))))

ungolded:

    (defun f ()
      (let ((s (string (read))))
        (let ((n (/ (parse-integer (subseq s 0 (1- (length s)))) 10)))
          (if (> n 0)
              (progn
                (dotimes (r n)
                  (progn
                    (dotimes (c r)
                      (format t " "))
                    (format t "-")
                    (if (= (1+ r) 10)
                        (format t "10")
                      (dotimes (j (* 2 (- n r)))
                        (format t "~S" (1+ r))))
                    (format t "-~%")))
                (dotimes (d (- 10 n))
                  (dotimes (c n)
                    (format t " "))
                  (format t "--~%")))))))

ব্যবহার:

    CL-USER 2515 > (f)
    10%
    -11-
     --
     --
     --
     --
     --
     --
     --
     --
     --
    NIL

    CL-USER 2516 > (f)
    50%
    -1111111111-
     -22222222-
      -333333-
       -4444-
        -55-
         --
         --
         --
         --
         --
    NIL

    CL-USER 2517 > (f)
    100%
    -11111111111111111111-
     -222222222222222222-
      -3333333333333333-
       -44444444444444-
        -555555555555-
         -6666666666-
          -77777777-
           -888888-
            -9999-
             -10-
    NIL

0

এপিএল, 46 বাইট

{↑(⍳10){(''↑⍨1-⍺⌊a+1),1⌽'--',⍵⍴⍕⍺}¨10↑2×⌽⍳a←⍵}

আর্গুমেন্টটি 10 ​​দ্বারা বিভক্ত শতাংশ হিসাবে দেওয়া উচিত (এটি: একটি সাধারণ পূর্ণসংখ্যা, [0,10] এর মধ্যে রয়েছে)।

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