আরোহী / উতরান সংখ্যাগুলির একটি খিলান মুদ্রণ করুন


28

সংখ্যার এই প্যাটার্নটি বর্ণনা করার জন্য আমি একটি "খিলান" হ'ল সেরা উপায়:

1234567887654321
1234567  7654321
123456    654321
12345      54321
1234        4321
123          321
12            21
1              1

আনুষ্ঠানিকভাবে সংজ্ঞায়িত, প্রতিটি লাইনে 1 মাধ্যমে সংখ্যা 9-n, (n-1)*2স্পেস এবং 1 এর মাধ্যমে সংখ্যা 9-nথাকে ( nবর্তমান রেখাটি কোথায় )।

আপনার কাজটি হ'ল সংক্ষিপ্ততম কোডটি ব্যবহার করে একটি ছোট স্ক্রিপ্ট / প্রোগ্রাম যা নিম্নোক্ত বিধিনিষেধের সাথে উপরের প্যাটার্নটি প্রিন্ট করে তা লিখতে হয়:

  1. আপনি পুরো প্যাটার্নটি হার্ডকোড নাও করতে পারেন। আপনি সর্বাধিক প্যাটার্নের একক লাইন হার্ডকোড করতে পারেন।
  2. আপনার প্রোগ্রামটি অবশ্যই প্রতিটি লাইনের শেষে একটি নতুনলাইন ( \nবা এর কোনও সংমিশ্রণ \r) মুদ্রণ করবে।

প্রস্তুত ... সেট .... যাও!


1
123456787654321এটির সমান হিসাবে উপরের লাইনের সাথে অতিরিক্ত ছোট্ট কৌশল উপলব্ধ হবে 11111111^2 ;-)
এগার স্ক্রিপটুনফ

3
@ এগরস্ক্রিপ্টুনফ 11111111^2 == 123465787654321 != 1234567887654321(পুনরাবৃত্তিটি লক্ষ্য করুন 8)
বব


6
দেখতে বরং পর্দার মতো দেখাচ্ছে ।
অস্থিরতা

উত্তর:


22

পাইথন 2, 65 55 53 51

s=12345678
while s:r='%-8d'%s;print r+r[::-1];s/=10

উগোরেনের কিছু ধারণা ব্যবহার করে সংক্ষিপ্ত করা হয়েছে ।


হেই, আমি জানতাম উন্নতির জন্য জায়গা রয়েছে: পি
নাথান ওসমান

2
আপনি s=s[1:]প্রতি লুপ এবংwhile s:
ইউগোরেন


9

এপিএল (18)

k,⌽k←↑↑∘(1↓⎕D)¨⌽⍳8

ব্যাখ্যা:

  • 1↓⎕D: অঙ্কগুলির স্ট্রিং ("0123456789") এর প্রথম উপাদানটি বিয়োগ করবে
  • ↑∘(1↓⎕D)¨⌽⍳8: প্রথম [8..1] টি অক্ষর নির্বাচন করুন ('12345678', '1234567' ...)
  • : ম্যাট্রিক্স হিসাবে ফর্ম্যাট (ফাঁকা দিয়ে অব্যবহৃত অক্ষর পূরণ করা)
  • k,⌽k←: স্টোর ইন করুন kএবং kএর উল্লম্ব মিররিংয়ের পরে প্রদর্শন করুনk

4

রুবি: 61 50 টি অক্ষর

s="87654321";s.chars{|c|puts s.reverse+s;s[c]=" "}

নমুনা রান:

bash-4.2$ ruby -e 's="87654321";s.chars{|c|puts s.reverse+s;s[c]=" "}'
1234567887654321
1234567  7654321
123456    654321
12345      54321
1234        4321
123          321
12            21
1              1

4

বেফুঞ্জ - 3 এক্স 18 = 54

আমি অনুভব করেছি যে বেফুঞ্জের সাথে আমার কিছু করতে হবে, শেষ বারটি ব্যবহার করার পরে অনেক দীর্ঘ হয়েছে। এই সমস্যাটি ভাষার পক্ষে সবচেয়ে উপযুক্ত বলে মনে হয়েছে।

মুদ্রণ লুপের কারণে এটি ভয়াবহভাবে ধীর হয় যা প্রতি চরিত্রের জন্য প্রায় 8 টি ক্রিয়াকলাপ গ্রহণ করে (গণনার শৈলী পৃথক করে)।

80v >#v"12345678"<
>5 *^ >,#$:_$:1-:v
^2< 0p0+7\*48\_@#<

4

জাভাস্ক্রিপ্ট, 71

s='1234567887654321',i=10;while(--i)console.log(s=s.split(i).join(' '))

s="1234567887654321";for(i=10;--i;)console.log(s=s.split(i).join(" "))70 টি চরিত্রের জন্য, @ স্টিভওয়ারলি
ওয়ালি ওয়েস্ট

3

সি, 83 টি অক্ষর

main(a,b,n){
    for(a=12345678,n=1e8,b=n-a-1;a;a/=10)
        printf("%-8d%8d\n",a,b),
        b%=n/=10;
}

3

পাইথন 2, 75 62

এটি ভোলাটিলিটির জবাবকে হারাবে না, তবে অজগরটির পরিবর্তনীয় স্ট্রিং ( bytearray) ব্যবহার করে এখানে আরেকটি পদ্ধতি দেওয়া হয়েছে :

s=bytearray('1234567887654321')
for i in range(8):s[8-i:8+i]=i*'  ';print s

সম্পাদন করা

আমি একটি সংক্ষিপ্ত সংস্করণ পেয়েছি str.replace:

s='1234567887654321'
for c in s[8:]:print s;s=s.replace(c,' ')

3

পার্ল, 41

প্লাস -Eসুইচ কমান্ড লাইনের মোট অক্ষর: 50

কমপক্ষে perl5, সংস্করণ 10 প্রয়োজন।

perl -E'say@!=1..8-$_,$"x(2*$_),reverse@!for-0..7'

আমি বলব এটি 42, এই কারণে যে স্ট্যান্ডার্ড চেহারাটি -Eপ্রোগ্রামটিতে এক-বাইট সংযোজন।
টিমটেক

3

গণিত 92 92 67 67 54 51

পদ্ধতি # 1 : (54 টি অক্ষর) সারি #, কল # এবং বাম-ডান প্রান্ত থেকে দূরত্ব ব্যবহার করে অ্যারে তৈরি করে।

Grid@Array[If[#2<9,#2,17-#2]/.x_/;x+#>9:>" "&,{8,16}]

পদ্ধতি # 2 : (67 টি অক্ষর) প্যাড সর্বদা সংক্ষিপ্তকরণের ব্যাপ্তি।

Print@@@Table[Join[k = PadRight[Range@i, 8, " "], Reverse@k], {i, 8, 1, -1}];

পদ্ধতি # 3 : (85 অক্ষর) একটি অ্যারের প্রতিটি সারি নির্বাচন করে পূরণ করুন।

8 স্থান অক্ষরের তালিকা দিয়ে শুরু করুন। "1" দিয়ে 1 এবং 16 পজিশনগুলি প্রতিস্থাপন করুন; 2 এবং 15, ইত্যাদি অবস্থানে "2" প্রতিস্থাপন করুন etc.

p = 0; q = 16;
Print @@@Reverse@Rest@NestList[ReplacePart[#, {++p -> p, q-- -> p}]&,Array[" "&,q], 8];

পদ্ধতি # 4 : (86 টি অক্ষর) একটি অ্যারের প্রতিটি সারি নির্বাচন করে ফাঁকা করুন।

p=8;q=9;
Print@@@NestList[ReplacePart[#,{p---> " ",q++-> " "}]&,Join[k=Range@8,Reverse@k],7];

পদ্ধতি # 5 : স্ট্রিং ব্যবহার করে (92 টি অক্ষর)

p=8;s="12345678";
Print[#,StringReverse@#]&/@NestList[StringReplace[#,ToString@p-- ->  " "]&,s,7];

এই নতুন একটি চতুর! পারলে আমি আবার +1 করতাম। :-) BTW, আপনি ড্রপ করতে পারেন (), এবং প্রতিস্থাপন #1সঙ্গে #:Grid@Array[If[#2<9,#2,17-#2]/.x_/;x+#>9:>" "&,{8,16}]
Mr.Wizard

টিপস জন্য ধন্যবাদ। হ্যাঁ, Arrayকখনও কখনও পুনরাবৃত্তকারীদের যুক্ত না করেই দুর্দান্ত টেবিল তৈরি করা যায়।
ডেভিডসি

3

পিএইচপি, 68

(হামজার উত্তর দ্বারা অনুপ্রাণিত)

for($n=8;$n;$r[]=$n--)echo str_replace($r," ","1234567887654321\n");

পিএইচপি-র str_replace অনুসন্ধানের জন্য একটি অ্যারে এবং প্রতিস্থাপনের জন্য একটি স্ট্রিং গ্রহণ করতে পারে তা নিয়ে অভিনয় করে এটি অ্যারের প্রতিটি আইটেম প্রদত্ত স্ট্রিংয়ের সাথে প্রতিস্থাপন করবে। প্রতিটি পুনরাবৃত্তির পরে, বর্তমান নম্বরটি অনুসন্ধান অ্যারেতে যুক্ত করা হবে, এটি পরবর্তী লুপ থেকে সরিয়ে ফেলা হবে।

ক্রিয়াকলাপের কোডের উদাহরণ: http://ideone.com/9wVr0X


সে ভাল +1
হামজা

মাঝখানে
ফাঁকের

@ নাথানহাইফিল্ড: কীভাবে? প্রথম লাইনের 0 টি স্পেস রয়েছে, দ্বিতীয়টিতে 2, তারপরে 4, 6, 8 ইত্যাদি রয়েছে
মিঃ লালমা


কারণ আউটপুটটি <pre>ট্যাগগুলিতে মোড়ানো ছিল না । যখন এইচটিএমএল পাঠ্য হিসাবে ব্যাখ্যা করা হয়, স্পেসগুলি ধসে পড়ে এবং নতুন লাইনগুলি উপেক্ষা করা হয়, তবে যদি আপনি উত্সটি পরীক্ষা করেন তবে আপনি অন্যথায় দেখতে পাবেন।
মিঃ লালমা

3

মার্বেলস 165

@0
08
>0
LN
--
@0
:LN
}0}0}0}0
..SAPSSD0A
{0
:PS
}0
~~09
..//
<<@0
\\>0
&0//
--@1
@020
&0/\&0
@1
:SA
@0
}0
>0!!
--00@1
@0++//
+O/\@1
+O
:SD
}0@0
\\>0\/
--/\+O
@0..+O

pseudocode:

MB():
    for x in 8..1:
        LN(x)
LN(x):
    SA(x)
    PS(x)
    SD(x)
    print "\n"
PS(x):
    print " "*(8-x)*2
SA(x):
    for n in 1..x:
        print n
SD(x):
    for n in x..1:
        print n

2

পাইথন 2.x - 73 65 63 61 অক্ষর

c=1;s='87654321'
while c<9:print s[::-1]+s;s=' '*c+s[c:];c+=1


2

কে, 28

-1_a,'|:'a:8$'{-1_x}\,/$1+!8

k)-1_a,'|:'a:8$'{-1_x}\,/$1+!8
"1234567887654321"
"1234567  7654321"
"123456    654321"
"12345      54321"
"1234        4321"
"123          321"
"12            21"
"1              1"

আপনি এটি 36 এর জন্য সাধারণ করতে পারেন: {-1_a,'|:'a:(#*m)$'m:{-1_x}\,/$1+!x}

k){-1_a,'|:'a:(#*m)$'m:{-1_x}\,/$1+!x} 5
"1234554321"
"1234  4321"
"123    321"
"12      21"
"1        1"
q)k){-1_a,'|:'a:(#*m)$'m:{-1_x}\,/$1+!x} 15
"123456789101112131415514131211101987654321"
"12345678910111213141  14131211101987654321"
"1234567891011121314    4131211101987654321"
"123456789101112131      131211101987654321"
"12345678910111213        31211101987654321"
"1234567891011121          1211101987654321"
"123456789101112            211101987654321"
"12345678910111              11101987654321"
"1234567891011                1101987654321"
"123456789101                  101987654321"
"12345678910                    01987654321"
"1234567891                      1987654321"
"123456789                        987654321"
"12345678                          87654321"
"1234567                            7654321"
"123456                              654321"
"12345                                54321"
"1234                                  4321"
"123                                    321"
"12                                      21"
"1                                        1"

2

জাভাস্ক্রিপ্ট, 67 টি অক্ষর

স্টিভওয়ারলির উত্তরের দ্বারা প্ররোচিত (আমি যদি পারতাম তবে মন্তব্য করব):

টুকিটাকি সংকেতলিপি

a='1234567887654321\n',b='',c=10;while(--c)b+=a=a.split(c).join(' ')
<a href="#" onclick="javascript:document.getElementById('output').innerHTML = b;">Display</a>
<pre id="output">...</pre>

শেষ নিউলাইন উপস্থিতি নিয়ম অনুসরণ করে।

আপডেট: বন্ধনী (অপারেটর অগ্রাধিকার) এবং অপরিবর্তিত স্থান সরিয়ে 1 অক্ষর কেটে 2 টি অক্ষর কাটুন

দেখে মনে হচ্ছে এটি আমাকে ট্রোল করছে, কারণ কোডের একটি অংশকে হার্ড-কোডিং করে আমি কতগুলি বিভিন্ন উপায়ে ছোট বা সরল করার চেষ্টা করেছি, নীচে লেখা "আমার মনে হয় এই গণনা" বিধিটি প্রয়োগ না করা পর্যন্ত দৈর্ঘ্য একই থাকবে।

(যদি ক্রোম কনসোলে কার্যকর করা হয় তখন মুদ্রণটি যদি ফিরে আসে তখন গণনা করা হয়)


এটি অন্য উত্তরের মতো দেখায় না, সংখ্যাগুলি ডান কলামে প্রান্তিক হয় না।
AL

@AL সতর্কতা জরুরী নয় যদি আপনি পড়েন ব্যঞ্জন বিটিডব্লিউ থেকে কী আউটপুট আসে।
সোফিয় 2329

ডান কলামটি সারিবদ্ধ করতে, যোগ দেওয়ার স্ট্রিং আর্গুমেন্টে 2 এর পরিবর্তে 1 স্থান থাকা উচিত। 2 স্পেস সহ এটি ক্রোম-ভিত্তিক ব্রাউজার সতর্কতায় সঠিকভাবে প্রান্তিক হয়।
কিওয়ারটি

জেএস সতর্কতা ছাড়াই একটি স্নিপেটে ফলাফলটি প্রদর্শন করতে আমি আপনার পোস্ট আপডেট করেছি (সম্পাদনাটি গ্রহণ করা উচিত), এক্ষেত্রে কেবলমাত্র একটি স্থান প্রয়োজন।
AL

2

ব্রেইনফাক: 542 বাইট

-[----->+<]>--.+.+.+.+.+.+.+..-.-.-.-.-.-.-.>++++++++++.[->+++++
<]>-.+.+.+.+.+.+.+[-->+<]>++++..----[->++<]>-.-.-.-.-.-.-.>++++++++++.[->+++++
<]>-.+.+.+.+.+.[-->+<]>+++++....-----[->++<]>.-.-.-.-.-.>++++++++++.[->+++++
<]>-.+.+.+.+.--[--->++<]>--......-----[->++<]>-.-.-.-.-.>++++++++++.[->+++++
<]>-.+.+.+.-[--->++<]>--........++[-->+++<]>+.-.-.-.>++++++++++.[->+++++
<]>-.+.+.[--->++<]>--..........++[-->+++<]>.-.-.>++++++++++.[->+++++
<]>-.+.--[--->++<]>............[-->+++<]>++.-.>++++++++++.[->+++++
<]>-.-[--->++<]>..............[-->+++<]>+.

1

গণিত , 59

61 আমার নিজস্ব ধারণা ব্যবহার করে:

Grid[Clip[#~Join~Reverse@#&@Range@8,{1,9-#},{," "}]&~Array~8]

বা 59, দায়ূদের উত্তর থেকে bণ নেওয়া:

Grid@Array[Join[k=PadRight[Range[9-#],8," "],Reverse@k]&,8]

আমি আপনার প্রবেশের মাধ্যমে অনুপ্রাণিত গ্রিড ব্যবহার করে 4 টি অক্ষর সংরক্ষণ করেছি।
ডেভিডসি


1

হাস্কেল, ৮৪

কারও উন্নতি করার জন্য একটি সূচনা পয়েন্ট:

mapM_ putStrLn[let l=take(8-i)"12345678"++replicate i ' 'in l++reverse l|i<-[0..7]]

সম্ভবত অংশটি l++reverse lবিন্দুটি মুক্ত করা, আমাদেরকে letস্টেটমেন্ট থেকে মুক্তি দিতে দেওয়া , তবে আমি খুঁজে পেতে পারি ap, যার জন্য আমদানি দরকার।


1

পোস্টস্ক্রিপ্ট: 105 টি অক্ষর

স্ট্রিং হ্যান্ডলিং পিএস-তে সহজ নয় তবে তুলনামূলক সহজ কোডের জন্য তৈরি করতে পারেন:

0 1 7{(1234567887654321)dup
8 3 index sub(              )0 6 -1 roll 2 mul getinterval putinterval =}for

120 চরগুলিতে কিছুটা দীর্ঘতর সংস্করণ তবে 1 থেকে 9 সীমাতে যে কোনও সংখ্যার সাথে দ্বিতীয় লাইনের শুরুতে 8 টি প্রতিস্থাপন করে বিভিন্ন সংখ্যা খিলান তৈরি করতে পারে:

/D{dup}def/R{repeat}def/P{=print}def
8 D -1 1{1 1 index{D P 1 add}R pop 2 copy sub{(  )P}R D{D P 1 sub}R pop()=}for pop

এটি দেখে ভাল লাগল যে আমি সেখানে একমাত্র পোস্টস্ক্রিপ্টকে পছন্দ করি না।
এজেম্যানসফিল্ড


1

কে 20

{x,'|:'x:|x$,\$1+!x}    

q)k){x,'|:'x:|x$,\$1+!x}8    
"1234567887654321"    
"1234567  7654321"    
"123456    654321"    
"12345      54321"    
"1234        4321"      
"123          321"    
"12            21"    
"1              1"    

1

টিএসকিউএল, 148

সম্পাদনা করুন: ম্যানটওয়ার্কের পরামর্শ সহ নীচে 148 এ নামান এবং অর্ডার দিয়ে টুইট করুন।

রিডেবল:

WITH t AS(
    SELECT 1n, CAST(1 AS VARCHAR(MAX)) o
 UNION ALL
    SELECT n+1,o+CHAR(n+49)
    FROM t
    WHERE n<8
)
SELECT o  + SPACE(16-2*n) + REVERSE(o)
FROM t
ORDER BY 1 DESC

Golfed:

WITH t AS(SELECT 1n,CAST(1AS VARCHAR(MAX))o UNION ALL SELECT 1+n,o+CHAR(n+49)FROM t WHERE n<8)SELECT o+SPACE(16-2*n)+REVERSE(o)FROM t ORDER BY 1DESC

আউটপুট:

1234567887654321
1234567  7654321
123456    654321
12345      54321
1234        4321
123          321
12            21
1              1

1
সুন্দর. তবে আপনি দয়া করে এটির ফর্ম্যাটটিতে পোস্ট করতে পারেন যেখানে আপনি 153 টি অক্ষর গণনা করেছেন? যাইহোক, আপনি 1স্ট্রিংয়ের পরিবর্তে সংখ্যার সাহায্যে 2 টি অক্ষর বাড়াতে পারবেন '1'যেখানে castএটি তত্ক্ষণাত into ুকে পড়বে varchar। এটি আমার দেয় 149 অক্ষর: with t as(select 1n,cast(1as varchar(max))o union all select n+1,o+char(n+49)from t where n<8)select o+space(16-2*n)+reverse(o)from t order by o desc
manatwork

@ মান্যাটওয়ার্ক: আমি 153 নম্বরটি পুনরুত্পাদন করতে পারিনি, কারণ আমি কমতে থাকি। আপনার পরামর্শ প্রয়োগ করেছেন, যদিও। ধন্যবাদ!
comfortablydrei

1

হাস্কেল, 79

r n x|x>n=' '|True=x
t="87654321"
main=mapM(putStrLn.(`map`("12345678"++t)).r)t

এটি অক্ষরগুলি n এর সাথে প্রতিস্থাপন করে কাজ করে ' ', যেখানে "87654321" থেকে অক্ষর এন করা হয় (যা প্রতিস্থাপনের জন্য স্ট্রিংয়ের লেজ বলে মনে হয়)।


1

পিএইচপি: cha১ টি অক্ষর (বা 60 টি অক্ষর যদি আপনি সত্যিকারের ASCII নিউলাইন দ্বারা replace n প্রতিস্থাপন করেন)

(গিগা ওয়াটস এবং হামজার উত্তর দ্বারা অনুপ্রাণিত)

for($n=9;$n;$r[$n--]=" ")echo strtr("1234567887654321\n",$r);

http://ideone.com/FV1NXu


1

পাওয়ারশেল: 38

গল্ফ কোড

8..1|%{-join(1..$_+"  "*(8-$_)+$_..1)}

walkthrough

8..1|%{... }পাইপ পূর্ণসংখ্যা 8 থেকে 1 পর্যন্ত একটি ফরইচ-অবজেক্ট লুপে।
-join(... )কোনও সীমানা ছাড়াই নেস্টেড কোডের আউটপুটকে একক স্ট্রিংয়ে যোগ দেয়।
1..$_আউটপুটগুলি লুপে 1 থেকে বর্তমান পূর্ণসংখ্যায় আরোহণ করে gers
+" "*(8-$_)একটি ডাবল-স্পেস যুক্ত করে আউটপুটটিতে 8 এবং বর্তমান পূর্ণসংখ্যার পার্থক্যটি দ্বারা গুন করা হয়।
+$_..1আউটপুটে বর্তমান পূর্ণসংখ্যা থেকে 1 তে নেমে পূর্ণসংখ্যা যোগ করে।


1

ল্যাম্বডাস সহ জাভাস্ক্রিপ্ট, 147

(s="12345678")[r="replace"](/./g,i=>s[r](RegExp(".{"+(i-1)+"}$"),Array(i*2-1).join(" ")))[r](/\d{1,8} */g,m=>m+(Array(m%10+1).join(m%10+1)-m)+"\n")

ফায়ারফক্সে পরীক্ষা করা যায়।



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