কোড গল্ফ ক্রিসমাস সংস্করণ: উচ্চতার ক্রিসমাস ট্রি কীভাবে প্রিন্ট করা যায়


89

একটি নম্বর দেওয়া N, আমি কীভাবে Nকোডের স্বল্প সংখ্যার ব্যবহার করে উচ্চতার ক্রিসমাস ট্রি মুদ্রণ করব ? Nএটি একটি সর্বনিম্ন মানের সীমাবদ্ধ বলে ধরে নেওয়া হয় 3এবং সর্বাধিক মান 30(সীমা এবং ত্রুটি পরীক্ষা করার প্রয়োজন হয় না)। Nআপনার প্রোগ্রাম বা স্ক্রিপ্টে একমাত্র এবং একমাত্র কমান্ড লাইন আর্গুমেন্ট হিসাবে দেওয়া হয়।

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

একটি ক্রিসমাস ট্রি এমনভাবে উত্পন্ন হয়, যার "ট্রাঙ্ক" শুধুমাত্র একটি কেন্দ্রিক "*" থাকে

এন = 3:

   *
  ***
 *****
   *

এন = 4:

    *
   ***
  *****
 *******
    *

এন = 5:

     *
    ***
   *****
  *******
 *********
     *

এন একটি লাইন ট্রাঙ্ক সহ শাখাগুলির উচ্চতা নির্ধারণ করে।

মেরি ক্রিসমাস পিপিসি!

উত্তর:


46

জে , 24 অক্ষর

(,{.)(}:@|."1,.])[\'*'$~

   (,{.)(}:@|."1,.])[\'*'$~5
    *    
   ***   
  *****  
 ******* 
*********
    *    

ব্যাখ্যা:

'*'$~5
*****

[\'*'$~5
*    
**   
***  
**** 
*****

তারপরে }:@|."1প্রতিটি সারি বিপরীত হয় এবং শেষ কলামটি ,.সরিয়ে দেয় এবং এটিকে স্ট্যাপল করে ]

তারপরে ,{.নীচে প্রথম কলামটি আটকান।

পূর্ববর্তী এন্ট্রি :

29 টি অক্ষর, কোনও স্থান নেই s

   ((\। আমি @ #),}।) "1 $ & '*'" 0>: 0, ~ i.3
  *
 ***
*****
  *
   ((\। আমি @ #),}।) "1 $ & '*'" 0>: 0, ~ i.11
          *
         ***
        *****
       *******
      *********
     ***********
    *************
   ***************
  *****************
 *******************
*********************
          *

   বিশেষ দ্রষ্টব্য। 1 থেকে n পর্যন্ত গণনা করুন , তারপরে আবার 1 করুন
   >: 0, ~ i.3
1 2 3 1
   বিশেষ দ্রষ্টব্য। প্রতিবার '*' এক্স বার প্রতিলিপি
   $ & '*' "0>: 0, ~ i.3
*
**
***
*
   বিশেষ দ্রষ্টব্য। প্রতিটি সারি বিপরীত
   (\। আমি @ #) "1 $ & '*'" 0>: 0, ~ i.3
  *
 **
***
  *
   বিশেষ দ্রষ্টব্য। নেতৃস্থানীয় কলাম বন্ধ ফেলা
   } "1 $ & '*'" 0>:। 0, ~ i.3

*
**

   বিশেষ দ্রষ্টব্য। একসাথে পেস্ট করুন
   ((\। আমি @ #),}।) "1 $ & '*'" 0>: 0, ~ i.3
  *
 ***
*****
  *

আরও 9 টি চরিত্রের সাহায্যে আপনি এই ফাংশনটির একটি নাম দিতে পারেন:c=:[:((\:i.@#),}.)"1[:$&'*'"0[:>:0,~i.
20

11
কী, আপনি ছেলেরা কোডটি বোঝার জন্য আই ডকুমেন্টেশন লাইব্রেরিটি ব্যবহার করেন? :)

92

ব্রেনফাক, 240 টি অক্ষর

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

এখনও সম্পন্ন না. এটি কাজ করে তবে কেবল একক-সংখ্যার সাথে।

সম্পাদনা: সম্পন্ন! ইওএফ হিসাবে 0 ব্যবহার করে দোভাষীদের জন্য কাজ করে। NOTE-1 এর সাথে মন্তব্যকারী উত্সে এস দেখুন ।

আবার সম্পাদনা করুন: আমার নোট করা উচিত যেহেতু ব্রেইনফাকের কমান্ড লাইন আর্গুমেন্টগুলি পড়ার জন্য একটি মানক পদ্ধতি নেই, আমি তার পরিবর্তে স্টিডিন (স্ট্যান্ডার্ড ইনপুট) ব্যবহার করেছি। অবশ্যই ASCII।

তৃতীয় বার সম্পাদনা করুন: ওহে প্রিয়, .কোডটি ঘনীভূত করার সময় মনে হয় আমি অক্ষরগুলি কেটে ফেলেছি (আউটপুট)। ফিক্সড ...

এখানে মূল লুপের বেসিক মেমরি পরিচালনা। আমি নিশ্চিত যে এটি 30 বা তার বেশি করে চরিত্রের সংখ্যা হ্রাস করতে ভারী অনুকূলিত হতে পারে।

  1. অস্থায়ী
  2. কাউন্টার এর অনুলিপি
  3. কাউন্টার (0 থেকে গণনা করা)
  4. স্থান অক্ষর (দশমিক 32)
  5. তারকাচিহ্ন (দশমিক 42)
  6. বর্তমান লাইনে তারকাচিহ্নগুলির সংখ্যা (1 + 2 * কাউন্টার)
  7. অস্থায়ী
  8. নতুন লাইন চরিত্র
  9. অস্থায়ী?
  10. মোট লাইন সংখ্যা (যেমন ইনপুট মান; ট্রাঙ্ক প্রিন্ট করার সময় একেবারে শেষ অবধি সংরক্ষণ করা)

ঘন সংস্করণ:

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

এবং সুন্দর সংস্করণ:

ASCII to number
,>
++++++++[-<------>]  = 48 ('0')

Second digit (may be NULL)
,
NOTE:   Add plus sign here if your interpreter uses negative one for EOF
[ NOTE: Then add minus sign here
 >++++++++[-<------>]
 <<[->++++++++++<]>>  Add first digit by tens
]

Duplicate number
<[->+>+>>>>>>>+<<<<<<<<<]>>

Space char
>>++++++++[-<++++>]

Asterisk char
>++++++[-<+++++++>]

Star count
+

New line char
>>>++[-<+++++>]<<<

<<<

Main loop
[
Print leading spaces
-[>.<-]

Undo delete
<[-<+>>+<]
<[->+<]
>>

Print stars
>>>[-<.>>+<]

Add stars and print new line
>[-<+>]
>.<
<++

<<<

-<->
End main loop
]

Print the trunk
>>>>>>>
-[-<<<<<<.>>>>>>]
<<<<<.

Merry Christmas =)

1
আমার মস্তিষ্ক চ ..... অসুস্থ বোধ করে


63

পার্ল, 50 টি অক্ষর

(1 প্রাসঙ্গিক স্পেস)

পার্ল: এক লাইনের সংস্করণ:

print$"x($a-$_),'*'x($_*2+1),$/for 0..($a=pop)-1,0

এবং এখন আরও সাদা অংশের সাথে:

print $"  x ( $a - $_ ),             #"# Syntax Highlight Hacking Comment
      '*' x ( $_ * 2  + 1),
      $/
for 0 .. ( $a = pop ) - 1, 0;

$ perl tree.pl 3
   *
  ***
 *****
   *
$ perl tree.pl 11
           *
          ***
         *****
        *******
       *********
      ***********
     *************
    ***************
   *****************
  *******************
 *********************
           *
$ 

নন পার্ল ব্যবহারকারীদের জন্য প্রসারিত ব্যাখ্যা।

# print $Default_List_Seperator ( a space )  
#     repeated ( $a - $currentloopiterationvalue ) times,
print $" x ( $a - $_ ), 
#"# print '*' repeated( $currentloopiteration * 2 + 1 ) times. 
  '*' x ( $_ * 2  + 1),
# print $Default_input_record_seperator ( a newline )
  $/
# repeat the above code, in a loop, 
#   iterating values 0 to ( n - 1) , and then doing 0 again
for 0 .. ( $a = pop ) - 1, 0;
# prior to loop iteration, set n to the first item popped off the default list, 
#   which in this context is the parameters passed on the command line. 

25
পবিত্র জঞ্জাল ... পারল সত্যই অপঠনযোগ্য।

8
@ জেনাজান, এছাড়াও, এটি লক্ষ্য করা উচিত যে সর্বাধিক গল্ফিং যে কোনও ভাষায় BAD কোড। এটি যদি সবচেয়ে পরিষ্কার কোডের জন্য একটি প্রতিযোগিতা হত তবে আমরা এটিও জিততে পারি।
কেন্ট ফ্রেড্রিক

5
@ জেনাজান: প্রমাণ, আপনি আমাদের উপরের একে অপরের কোডের সহযোগিতা এবং উন্নতি করতে দেখতে পারেন, এটি প্রমাণ করে যে আমরা প্রতিটি অন্যান্য কোড পুরোপুরি সূক্ষ্মভাবে পড়তে পারি ।
কেন্ট ফ্রেড্রিক

1
পিএস: পার্ল নন পারল প্রোগ্রামারদের ব্যাখ্যার জন্য ধন্যবাদ। এটি এখনও বেশ অপঠনযোগ্য, তবে অন্তত এটি উপলব্ধি করে। আমার ধারণা আপনি কিছুক্ষণ পরে অভ্যস্ত হয়ে যাবেন।

2
@ রবঃ জে এপিএলের সন্তান। কিছু সংশ্লেষে এটি আরও অপঠনযোগ্য কারণ এটি প্রতিটি ক্রিয়াকলাপের জন্য একটি বিশেষ প্রতীক সহ এপিএলের চরিত্র সেটটি ব্যবহার করে না - পরিবর্তে এটি ASCII অক্ষরকে একাধিক অর্থের সাথে ওভারলোড করে। stackoverflow.com/questions/392788/1088931#1088931
ephemient

26

ভাষা: পাইথন (শেলের মাধ্যমে), চর গণনা: (৪ (২ টি গুরুত্বপূর্ণ স্থান)

python -c "
n=w=$1
s=1
while w:
    print' '*w+'*'*s
    s+=2
    w-=1
print' '*n+'*'"

$ sh ax6 11
           *
          ***
         *****
        *******
       *********
      ***********
     *************
    ***************
   *****************
  *******************
 *********************
           *

8
আমি এই সমাধানটির পক্ষে যা পছন্দ করি তা

আপনি আর্গুমেন্টটি প্রক্রিয়া করতে শেলটি ব্যবহার করছেন, যা কোড গল্ফ আইএমও-র মধ্যে নেই। "ইম্পোর্ট sys" এবং "n = w = int (sys.argv [1])" এবং লুপ বডির জন্য 1 টি অক্ষরের একটি ইনডেন্ট ব্যবহার করে আমি এই সংস্করণটির জন্য 89 টি অক্ষর নিয়ে এসেছি।

4
এর আগে আমি এটি করেছিলাম। এই প্রশ্নের চেতনাটি মজা করা এবং এটি ছাড়া কেবল একটি ভাষা ব্যবহারের কোনও স্পেসিফিকেশন ছিল না :) উদাহরণস্বরূপ ব্রেইনফাক উত্তরটি দেখুন; কোন যুক্তি নেই।

26

x86 asm 16-bit, 50 বাইট

এখনও কোন সমাবেশ সংস্করণ নেই? :)

    bits 16
    org 100h

    mov si, 82h
    lodsb
    aaa
    mov cx, ax
    mov dx, 1
    push cx 
    mov al, 20h
    int 29h
    loop $-2
    push dx
    mov al, 2ah
    int 29h
    dec dx
    jnz $-3
    pop dx
    mov al, 0ah
    int 29h
    inc dx
    inc dx
    pop cx
    loop $-23
    shr dx, 1
    xchg cx, dx
    mov al, 20h
    int 29h
    loop $-2
    mov al, 2ah
    int 29h
    ret

(দ্রষ্টব্য: N এই সংস্করণে 1 - 9 এর মধ্যে সীমাবদ্ধ)

G:\>tree 9
         *
        ***
       *****
      *******
     *********
    ***********
   *************
  ***************
 *****************
         *

এখানে ডাউনলোড করুন


24

ভাষা: উইন্ডোজ ব্যাচ স্ক্রিপ্ট ( জঘন্য! )

@echo off
echo Enable delayed environment variable expansion with CMD.EXE /V

rem Branches
for /l %%k in (1,1,%1) do (
set /a A=%1 - %%k
set /a B=2 * %%k - 1
set AA=
for /l %%i in (1,1,!A!) do set "AA=!AA! "
set BB=
for /l %%i in (1,1,!B!) do set BB=*!BB!
echo !AA!!BB!
)

rem Trunk
set /a A=%1 - 1
set AA=
for /l %%i in (1,1,!A!) do set "AA=!AA! "
echo !AA!*

মর্ষকামী! আমি এটি পছন্দ করি

খুব সুন্দর ... আপনি +1

2
বিলম্বিত ভেরিয়েবল সম্প্রসারণ setlocal enabledelayedexpansionকমান্ডটি ব্যবহার করে সক্ষম করা যেতে পারে ।
হেলেন

শহরবাসী. গম্ভীরভাবে?

এটি কাজ করতে পারে না। আমি যদিও প্রথমবার চেষ্টা।
ফেবিনআউট

21

রুবি, 64 বাইট

n=ARGV[0].to_i
((1..n).to_a+[1]).each{|i|puts' '*(n-i)+'*'*(2*i-1)}

n=$*[0].to_i
((1..n).to_a<<1).each{|i|puts' '*(n-i)+'*'*(2*i-1)}

সমস্ত বড়দিন বড়দিন!

সম্পাদনা করুন: জোশুয়া সুইঙ্কের পরামর্শ অনুসারে উন্নতিগুলি যুক্ত হয়েছে


ডাং আমি আশা করছিলাম কেউ এখনও এটি রুবিতে চেষ্টা করেনি। সুন্দর কাজ.

এটি রুবির একটি খুব সুন্দর লাইন।

আমি কি খুব সঙ্কুচিত মনে হয়েছিল? দুঃখিত, আমার উদ্দেশ্য নয়! মেরি এক্সমাস! :)

হয় মানেই বোঝানো হয়নি, এবং অবশ্যই আপনি ঠিক বলেছেন! মেরি ক্রিসমাস!

1
১.৯-এ, আপনি আরও কিছু অক্ষর সংরক্ষণ করতে পারেন: n=$*[0].to_i;puts [*1..n,1].map{|i|" "*(n-i)+"*"*(2*i-1)}এটিকে 58 এ নামিয়ে

14

ভাষা: সি #, চর গণনা: 120

static void Main(string[] a)
{
    int h = int.Parse(a[0]);

    for (int n = 1; n < h + 2; n++)
        Console.WriteLine(n <= h ?
            new String('*', n * 2 - 1).PadLeft(h + n) :
            "*".PadLeft(h + 1));
    }
}

বিন্যাস ছাড়াই কেবল কোড, (120 টি অক্ষর):

int h=int.Parse(a[0]);for(int n=1;n<h+2;n++)Console.WriteLine(n<=h?new String('*',n*2-1).PadLeft(h+n):"*".PadLeft(h+1));

109 টি অক্ষর (কেবল কোড) সহ সংস্করণ:

for(int i=1,n=int.Parse(a[0]);i<n+2;i++)Console.WriteLine(new String('*',(i*2-1)%(n*2)).PadLeft((n+(i-1)%n)));

উচ্চতার জন্য ফলাফল = 10:

          *
         ***
        *****
       *******
      *********
     ***********
    *************
   ***************
  *****************
 *******************
          *

13

ভাষা: ডিসি (শেলের মাধ্যমে) চর গণনা: 83

একটু সংক্ষিপ্ত ডিসি সংস্করণ:

dc -e '?d1rdsv[d32r[[rdPr1-d0<a]dsaxszsz]dsbx1-rd42rlbx2+r10Plv1-dsv0<c]dscxszsz32rlbx[*]p' <<<$1

সম্পাদনা: ধ্রুবক 10 কে $ 1 এ পরিবর্তন করেছে


11
ভাল হুজুর, ওটা কি?

1
স্রেফ ম্যান পৃষ্ঠাটি পড়ুন ;-)

12

অজগর, "-সি" ট্রিক ... @ 61 টি অক্ষর (এবং একটি লাইন)

python -c"for i in range($1)+[0]:print' '*($1-i)+'*'*(2*i+1)"

প্রকৃতপক্ষে, এটি 57 টি অক্ষর, প্রশ্নের স্পেসিফিকেশন অনুযায়ী কেবল '' 'স্থানটি উল্লেখযোগ্য।

10

এখানে যথাযথভাবে স্থান-দক্ষ হাস্কেল সংস্করণটি 107 টি অক্ষরে দেওয়া হয়েছে:

main=interact$(\g->unlines$map(\a->replicate(g-a)' '++replicate(a*2-1)'*')$[1..g]++[1]).(read::[Char]->Int)

এটি চলমান:

$ echo 6 | runhaskell tree.hs
     *
    ***
   *****
  *******
 *********
***********
     *

মেরি ক্রিসমাস, সব :)


10

ভাষা: ডিসি (শেলের মাধ্যমে), চর গণনা: ১১৯ (১ টি গুরুত্বপূর্ণ স্থান)

শুধু এটির অস্পষ্টতার জন্য :)

dc -e "$1dsnsm"'
[[ ]n]ss
[[*]n]st
[[
]n]sl
[s2s1[l2xl11-ds10<T]dsTx]sR
[lndlslRxlcdltlRxllx2+sc1-dsn0<M]sM
1sclMxlmlslRxltxllx
'

$ sh ax3 10
          *
         ***
        *****
       *******
      *********
     ***********
    *************
   ***************
  *****************
 *******************
          *

আহম সিরিয়াসলি, ডাব্লুটিএফ? আমি এর একটিও লাইন বুঝতে পারছি না: পি

ডিসি একটি বিপরীত-পলিশ ক্যালকুলেটর। 'ম্যান ডিসি' যাওয়ার সুস্পষ্ট উপায় :)

6

আরও ভাল সি ++, প্রায় 210 টি চর:

#include <iostream>
using namespace std;
ostream& ChristmasTree(ostream& os, int height) {
    for (int i = 1; i <= height; ++i) {
        os << string(height-i, ' ') << string(2*i-1, '*') << endl;
    }
    os << string(height-1, ' ') << '*' << endl;
    return os;
}

কমে 179:

#include <iostream>
using namespace std;ostream& xmas(ostream&o,int h){for(int i=1;i<=h;++i){o<<string(h-i,' ')<<string(2*i-1,'*')<<endl;}o<<string(h-1,' ')<<'*'<<endl;return o;}

স্ট্যান্ড ব্যবহার করে; যে কেউ?

স্ট্র্যাজার - যখন আমি শুরু করেছিলাম তখন মাত্র কয়েকজন std :: 's এবং' নেমস্পেস স্টাডি ব্যবহার করছি; ' পাঠ্য অনেক ছিল। আমার ধারণা এখনকার চরিত্রটি কম হবে।

আপনার সংস্করণটি আমার চেয়ে বেশি অদক্ষ, কারণ এটিতে স্ট্রিং তৈরি করতে হবে, আমার সংস্করণটি কেবল এটির জন্য প্রয়োজনীয় অক্ষরগুলি মুদ্রণ করে। :)
পাইয়ন

6

ভাষা: অজগর, কোন কৌশল, 78 টি অক্ষর

import sys
n=int(sys.argv[1])
for i in range(n)+[0]:print' '*(n-i)+'*'*(2*i+1)

6

গ্রোভি 62 বি

n=args[0]as Long;[*n..1,n].any{println' '*it+'*'*(n-~n-it*2)}

: _

n = args[0] as Long
[*n..1, n].any{ println ' '*it + '*'*(n - ~n - it*2) }

5

উন্নত। এর উত্তর। আমি মন্তব্য করতে পারি না, সুতরাং এখানে একটি নতুন পোস্ট দেওয়া হয়েছে। 72 অক্ষর।

import sys
n=int(sys.argv[1])
for i in range(n)+[0]:
   print ("*"*(2*i+1)).center(2*n)

"পাইথন-সি" কৌশলটি ব্যবহার করে 61১ টি অক্ষর।

python -c "
for i in range($1)+[0]:
   print ('*'*(2*i+1)).center(2*$1)
"

আমি কেন্দ্রের কাজটি শিখেছি এবং এটি "পাইথন-সি" একাধিক লাইন কোড গ্রহণ করতে পারে। ধন্যবাদ, ΤΖΩΤΖΙΟΥ।


5

সি # লিঙ্ক ব্যবহার করে:

    using System;
    using System.Linq;
    class Program
        {
            static void Main(string[] args)
            {
                int n = int.Parse(args[0]);
                int i=0;
                Console.Write("{0}\n{1}", string.Join("\n", 
                   new int[n].Select(r => new string('*',i * 2 + 1)
                   .PadLeft(n+i++)).ToArray()),"*".PadLeft(n));
            }
       }

170 চার্টার।

int n=int.Parse(a[0]);int i=0;Console.Write("{0}\n{1}",string.Join("\n",Enumerable.Repeat(0,n).Select(r=>new string('*',i*2+1).PadLeft(n+i++)).ToArray()),"*".PadLeft(n));

5

AWK, এক লাইনে 86 টি অক্ষর।

awk '{s="#";for(i=0;i<$1;i++){printf"%"$1-i"s%s\n","",s;s=s"##"}printf"%"$1"s#\n",""}'

echo "8" | awk '{s="#";for(i=0;i<$1;i++){printf"%"$1-i"s%s\n","",s;s=s"##"}printf"%"$1"s#\n",""}'
        #
       ###
      #####
     #######
    #########
   ###########
  #############
 ###############
        #

cat tree.txt
3
5

awk '{s="#";for(i=0;i<$1;i++){printf"%"$1-i"s%s\n","",s;s=s"##"}printf"%"$1"s#\n",""}' tree.txt
   #
  ###
 #####
   #
     #
    ###
   #####
  #######
 #########
     #

5

ভাষা: জাভা, চর গণনা: 219

class T{ /* 219 characters */
  public static void main(String[] v){
    int n=new Integer(v[0]);
    String o="";
    for(int r=1;r<=n;++r){
      for(int s=n-r;s-->0;)o+=' ';
      for(int s=1;s<2*r;++s)o+='*';
      o+="%n";}
    while(n-->1)o+=' ';
    System.out.printf(o+"*%n");}}

রেফারেন্সের জন্য, আমি পূর্ববর্তী ন্যূনতম 269 থেকে 231 অক্ষরে পুনরাবৃত্তি ব্যবহার করে পূর্ববর্তী জাভা সমাধানটি শেভ করতে সক্ষম হয়েছি Though যদিও আরও দীর্ঘতর হলেও, আমি এই সমাধানটি পছন্দ করি কারণ Tসত্যই বস্তু-ভিত্তিক। আপনি এলোমেলো আকারের Tদৃষ্টান্তগুলির একটি ছোট বন তৈরি করতে পারেন । এই ট্যাকের সর্বশেষ বিবর্তনটি এখানে:

class T{ /* 231 characters */
  public static void main(String[] v){new T(new Integer(v[0]));}}
  String o="";
  T(int n){
    for(int r=1;r<=n;++r){
      x(' ',n-r);x('*',2*r-1);o+="%n";}
    x(' ',n-1);
    System.out.printf(o+"*%n");
  }
  void x(char c,int x){if(x>0){o+=c;x(c,x-1);}
 }

আপনার নতুন অক্ষরের গণনা 251 (1 প্রাসঙ্গিক স্থান)

"পাবলিক স্ট্যাটিক অকার্যকর প্রধান" থেকে মুক্তি পান, একটি স্ট্যাটিক ব্লক ব্যবহার করুন এবং জাভা with; সহ সংকলন করুন
ফেবিনআউট

আমি জানি এটি প্রায় 9 বছর হয়ে গেছে (লোকে ..) তবে আপনি কিছু জিনিস গল্ফ করতে পারেন: class T{public static void main(String[]v){long n=new Long(v[0]),r=1,s;String o="";for(;r<=n;r++){for(s=n-r;s-->0;)o+=' ';for(;++s<2*r;)o+='*';o+="\n";}while(n-->1)o+=' ';System.out.println(o+"*");}}(199 অক্ষর / বাইট)
কেভিন ক্রুইজসেন

5

ভাষা: পাওয়ারশেল, চর গণনা: 41 (1 স্থান সহ)

1..$args[0]+1|%{" "*(30-$_)+"*"*($_*2-1)}

5

ডায়ালগ এপিএল সহ 21 টি অক্ষর।

m,⍨⌽0 1↓m←↑'*'\¨⍨1,⍨⍳

With দিয়ে শুরু করে পূর্ণসংখ্যার ভেক্টর 1 দিয়ে।

1, the ভেক্টরের শেষে একটি যুক্ত করে। এটি গাছের পা হবে।

'*' \ * পূর্ববর্তী ভেক্টর দ্বারা প্রদত্ত দৈর্ঘ্যের সাথে * -রস্ট্রিংগুলির একটি ভেক্টর দেয়।

। ভেক্টরকে একটি ম্যাট্রিক্সে রূপান্তরিত করে এবং ডানদিকে ফাঁকা স্থান যুক্ত করে।

m mat m তে ম্যাট্রিক্স সঞ্চয় করে।

0 1 ↓ ড্রপ শূন্য সারি এবং প্রথম কলাম।

The ম্যাট্রিক্স বিপরীত।

m, m ডান দিকের মিটার সাথে সংযুক্ত করে।


m,⍨⌽0 1↓m←->(⌽,0 1↓⊢)
এনজিএন

4

ভাষা: সি, চর গণনা: 133

সি-সংস্করণে উন্নতি।

char s[61];

l(a,b){printf("% *.*s\n",a,b,s);}

main(int i,char**a){
  int n=atoi(a[1]);memset(s,42,61);
  for(i=0;i<n;i++)l(i+n,i*2+1);l(n,1);
}

এমনকি যুক্তি হিসাবে গাছের উচ্চতা গ্রহণ করে। কে ও আর-স্টাইল কোড সহ্য করে এমন একটি সংকলক দরকার।

আমি এখন খুব নোংরা লাগছে .. এই কোডটি কুৎসিত।


এটি জাভাতে আমার প্রথম কাটার মতোই সমস্যা; এটি কোনও কমান্ড-লাইন আর্গুমেন্ট ব্যবহারের সাথে একটি সম্পূর্ণ প্রোগ্রাম নয়!

উহু? এটি কি প্রয়োজনীয়? সমস্যা নেই. আমি এটা ঠিক করব।

সমস্ত অপ্রয়োজনীয় নিউলাইনগুলি সরিয়ে ফেলা হলে এটি 138 টি অক্ষর।
বার্ক গ্যাডার 15

আমি 133 গণনা করেছি (সবেমাত্র সমস্ত

4

আর (62 বাইট)

আমি আর এর সমাধান দেখতে পাইনি। আমি যদি এটি মিস করি তবে আমাকে সংশোধন করুন।

for(i in c(1:N,1))cat(rep(" ",N-i),rep("*",2*i-1),"\n",sep="")

আউটপুট:

> N <- 3
> for(i in c(1:N,1))cat(rep(" ",N-i),rep("*",2*i-1),"\n",sep="")
  *
 ***
*****
  *
> 
> N <- 4
> for(i in c(1:N,1))cat(rep(" ",N-i),rep("*",2*i-1),"\n",sep="")
   *
  ***
 *****
*******
   *
> 
> N <- 5
> for(i in c(1:N,1))cat(rep(" ",N-i),rep("*",2*i-1),"\n",sep="")
    *
   ***
  *****
 *******
*********
    *

3

ভাষা: সি, চর গণনা: 176 (2 প্রাসঙ্গিক স্পেস)

#include <stdio.h>
#define P(x,y,z) for(x=0;x++<y-1;)printf(z);
main(int c,char **v){int i,j,n=atoi(v[1]);for(i=0;i<n;i++){P(j,n-i," ")P(j,2*i+2,"*")printf("\n");}P(i,n," ")printf("*\n");}


3

ভাষা: পাইথন, উল্লেখযোগ্য চর গণনা: 90

এটি কুৎসিত তবে এটি কাজ করে:

import sys
n=int(sys.argv[1])
print"\n".join(" "*(n-r-1)+"*"*(r*2+1)for r in range(n)+[0])

...

$ python tree.py 13
            *
           ***
          *****
         *******
        *********
       ***********
      *************
     ***************
    *****************
   *******************
  *********************
 ***********************
*************************
            *

আপনার অক্ষরের গণনা 98 (2 টি উল্লেখযোগ্য জায়গাগুলি, উদ্ধৃতিতে রয়েছে)

3

যেহেতু এটি একটি সিডব্লিউ: আমি পছন্দ করি না যে কোড গল্ফগুলি সর্বদা "সংখ্যার অক্ষর" বা সামসুচের ক্ষেত্রে সজ্জিত থাকে। সংকলক / দোভাষী (বা কিছু অনুরূপ মানদণ্ড) এর জন্য নির্দেশের সংখ্যার ভিত্তিতে সেগুলি সংগঠিত করা যায়নি? এখানে আবার রুবীর সমাধান এবং এটি মূলত একই, তবে এখন মানুষের ব্যবহারের ক্ষেত্রেও:

SPACE = " "
ASTERISK = "*"
height_of_tree=ARGV[0].to_i
tree_lines = (1..height_of_tree).to_a
tree_lines.push 1 # trunk
tree_lines.each do | line |
   spaces_before = SPACE*(height_of_tree-line)
   asterisks = ASTERISK*(2*line-1) 
   puts spaces_before + asterisks
end

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

ধন্যবাদ ... আমি গতকাল গল্ফ সম্পর্কে একটি প্রশ্ন জিজ্ঞাসা করেছি এবং এটি করার উপায়টি "টোকেন" দিয়ে থাকতে পারে ... সেইভাবে নাম-দৈর্ঘ্য এবং আরও কিছুদণ্ড শাস্তিযুক্ত নয়।



2

পিএইচপি, 111 অক্ষর

(একেবারে শেষ চরটি একটি নতুন লাইন হওয়া উচিত))

<?php $n=$argv[1];for($r='str_repeat';$i<$n;$i++)echo $r(' ',$n-$i).$r('*',$i*2+1)."\n";echo $r(' ',$n).'*' ?>

পঠনযোগ্য সংস্করণ:

<?php

$n = $argv[1];

for ($r = 'str_repeat'; $i < $n; $i++)
    echo $r(' ', $n - $i) . $r('*' , $i * 2 + 1) . "\n";

echo $r(' ', $n) . '*'

?>

আপনি স্ট্রিং তৈরি করে, আবার এটি প্রতিধ্বনি করে কয়েকটি অক্ষর সংরক্ষণ করতে পারেন। আমি মনে করি. চেষ্টা করে দেখুন

ভাল ধারণা, কিন্তু আমি এটি চেষ্টা করেছিলাম এবং এটি কেবল এটি দীর্ঘ করে তোলে। 'cho t। = (...)' 'প্রতিধ্বনি (...)' এর চেয়ে একটি মাত্র খাটো এবং তারপরে আপনাকে শেষে 'প্রতিধ্বনি' করতে হবে।

এটি '$ i = 0' অপসারণ করে 4 টি অক্ষর দ্বারা সংক্ষিপ্ত করে বিবৃতি জন্য প্রথম অংশ। পিএইচপি অনুমান করে যে কোনও পূর্ণসংখ্যার প্রসঙ্গে ব্যবহৃত অস্তিত্বের ভেরিয়েবলগুলি ইতিমধ্যে 0 টি! : পি

এর জন্য inside r = .. রেখে একটি চর সংরক্ষণ করা। এছাড়াও, আমি বলছি নিউলাইন চরিত্রগুলি দুটি নয়, একটি বাইট হওয়া উচিত। =]

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