ষড়ভুজ ত্রিভুজ!


20

আপনার কাজ: পাশের দৈর্ঘ্যের সাথে একটি ষড়ভুজ ত্রিভুজ তৈরি করুন n, যেখানে nইতিবাচক পুরো সংখ্যা বা 0।

প্রথমে, আমি একটি ষড়ভুজ সংজ্ঞায়িত করা যাক:

 / \
|   |
 \ /

(আশ্চর্যজনক ASCII শিল্প, তাই না?)

হেক্সাগনগুলি ভাগ করে নেওয়ার মাধ্যমে সংযুক্ত করা যেতে পারে:

 / \ / \
|   |   |
 \ / \ /

   / \  
  |   |
 / \ /
|   |
 \ /

একটি ষড়ভুজ ত্রিভুজ নিম্নলিখিত:

   / \
  |   |
 / \ / \
|   |   |
 \ / \ /

ষড়্ভুজাকৃতির ত্রিভুজটির পাশের দৈর্ঘ্য 2-- 2 হেক্সাগনকে একপাশে তৈরি করতে হবে। পার্শ্ব-দৈর্ঘ্য 1 সহ একটি ষড়্ভুজাকৃতির ত্রিভুজটি কেবল একটি একক ষড়্ভুজ, এবং পাশের দৈর্ঘ্য 0 সহ একটি ষড়ভুজ খালি।

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

আরও উদাহরণ:

Side length 3:
     / \
    |   |
   / \ / \
  |   |   |
 / \ / \ / \
|   |   |   |
 \ / \ / \ /

Side length 4:
       / \
      |   |
     / \ / \
    |   |   |
   / \ / \ / \
  |   |   |   |
 / \ / \ / \ / \
|   |   |   |   |
 \ / \ / \ / \ /
(This triangle isn't really filled, the borders make it look like there is a hexagon in the middle, but there is not.)

Side length 5:
         / \
        |   |
       / \ / \
      |   |   |
     / \ / \ / \
    |   |   |   |
   / \ /     \ / \
  |   |       |   |
 / \ / \ / \ / \ / \
|   |   |   |   |   |
 \ / \ / \ / \ / \ /

Side length 6:
           / \
          |   |
         / \ / \
        |   |   |
       / \ / \ / \
      |   |   |   |
     / \ /     \ / \
    |   |       |   |
   / \ /         \ / \
  |   |           |   |
 / \ / \ / \ / \ / \ / \
|   |   |   |   |   |   |
 \ / \ / \ / \ / \ / \ /

22
যদি এর জন্য কোনও হেক্সাগনি উত্তর না থাকে তবে আমি @ মার্টিনেেন্ডারে সমস্ত বিশ্বাস হারাব।
এয়ারড কোইনারিংহিংহিং

@ স্যুয়াকেনরেপ্লাইটোমিনকমেন্টস আসুন আমি শুধু বলি যে আমি যদি এখানে ব্যবহারকারীদের অনুসরণ করতে পারি তবে তারা তালিকায় থাকত।
phyrfox


2
আমি চারকোলে একটি সংক্ষিপ্ত উত্তর দেখতে প্রত্যাশা করি। আমি নিজে এটি করতাম, তবে আমাকে এটি প্রথমে শিখতে হবে, এবং এর পরিবর্তে আমি একটি সিনেমা দেখতে চাই, দুঃখিত sorry
নীল

3
@ নীল আপনাকে সম্পূর্ণ নতুন প্রোগ্রামিং ভাষা না শিখার জন্য ক্ষমা করা হয়েছে। তবে এটিই আপনার প্রথম সতর্কতা!
21

উত্তর:


11

কাঠকয়লা , 62 43 39 বাইট

NβF³«F⁻β‹ι²« / \¶|   |¶ \ /Mײι↑¿⁻¹ιM⁶←

এটি অনলাইন চেষ্টা করুন! সম্পাদনা করুন: কেবলমাত্র এএসসিআইআই-এর জন্য কিছু বাইটস সংরক্ষণ করা হয়েছে (ঠিক কতটা আমি ঠিক আরও 10 টি বাইটও সঞ্চয় করেছিলাম তা নিশ্চিত নয় তবে তার পরে একটি বাগফিক্সে 4 বাইট ব্যয় করতে হবে)। এখন নেস্টেড লুপগুলি ব্যবহার করে, যা এটির সাথে সমস্ত হওয়া উচিত ছিল।


45 বাইট: A / \¶| |¶ \ /αNβFβ«α←←»Fβ«α↖↖M⁶←»Fβ«αM⁴↑←←(বিটিডব্লিউ কাঠকয়লা »শেষে কোনও প্রয়োজন স্বয়ংক্রিয়ভাবে পূর্ণ হয় )
ASCII-

@ এএসসিআইআই-দু: খজনকভাবে দুঃখের সাথে আমি আর চারকোল ডকুমেন্টেশন খুঁজে পাচ্ছি না, সুতরাং আপনার কোডটি কী করে তা আমার কোনও ধারণা নেই।
নিল

কমান্ডগুলি এখানে উইকিতে রয়েছে , মূলত Assign(hexagon_with_space_to_left, a);InputNumber(b);for(b){Print(a);Move(:Left);Move(:Left);}for(b){Print(a);Move(:UpLeft);Move(:UpLeft);Move(6, :Left);}for(b){Print(a);Move(4, :Up);Move(:Left);Move(:Left);}, প্রতিটি লুপের জন্য একপাশে আঁকেন
ASCII-

আপনি যা করছিলেন তা খুব সুন্দর কিন্তু স্ট্রিংয়ের সাহায্যে ভেরিয়েবল হিসাবে সংরক্ষণ করা হয়েছে
এএসসিআইআই-

@ এএসসিআইআই-শুধুমাত্র অঙ্কনের দিকটি উল্টিয়ে আমি আরও 2 বাইট সংরক্ষণ করতে সক্ষম হয়েছি। (এছাড়াও আমি সামান্য হতাশ হয়েছি যে ষড়্ভুজ আঁকার সর্বোত্তম উপায় একটি স্ট্রিং আক্ষরিক, তবে কমপক্ষে এটি পুনরাবৃত্তি করা সহজ করে তোলে))
নীল

7

পাইথন 2, 184 177 174 164 বাইট

n=input();p='|   |';e=' \\ /'
for i in range(n):k=' '*(4*i-5);w='  '*~(i-n);print w+[' / \\'*-~i+'\n'+w+p[:4]*i+p,' /'+e+k[3:]+e+' \\\n'+w+p+k+p][2<i<n-1]
print e*n

অনলাইনে চেষ্টা করে দেখুন!

-7 বাইট ধন্যবাদ অর্জান জোহানসেনকে


আপনি |শীর্ষ তিনে এবং নীচে ষড়ভুজ সারিতে ডানদিকের সন্ধান করছেন ।
আরজান জোহানসেন

p[:4]*(i+2)পরিবর্তে p[:4]*(i+1)এটি সংশোধন করা হয় বলে মনে হচ্ছে।
janrjan জোহানসেন

আপনি কেবল bএকটি স্পটে ব্যবহার করছেন, সুতরাং এটি আপনার ~কৌতুকের সাথে সংমিশ্রণ করা হয় , w=' '*2*~(i-n)এটি 7 বাইট কম হয়।
আরজান জোহানসেন

@ আরজান জোহানসেন ধন্যবাদ, কোডটি অনেক রিফ্যাক্টরিংয়ের মধ্য দিয়ে গেছে এবং আমি এই জিনিসগুলি পরিবর্তন করতে ভুলে গিয়েছি
গণিত জাঙ্কি

6

জাভাস্ক্রিপ্ট (ES6), 243 বাইট

f=n=>(n=n*2-2,a=[...Array(n+3)].map(_=>Array(n*2+5).fill` `),g=(y,x)=>(a[y+1][x]=a[y+1][x+4]=`|`,a[y][x+1]=a[y+2][x+3]=`/`,a[y][x+3]=a[y+2][x+1]=`\\`),[...Array(n+!n)].map((_,i)=>i%2||(g(n,i*2),g(i,i=n-i),g(i,n+i))),a.map(a=>a.join``).join`
`)
<input type=number oninput=o.textContent=f(this.value)><pre id=o>


4

জাভাস্ক্রিপ্ট (ES6), 133 129 128 126 বাইট

দুটি লুপের জন্য অক্ষর দ্বারা আউটপুট অক্ষর তৈরি করে ।

n=>{for(s='',y=n*2,n*=4;~y--;s+=`
`)for(x=n;~x--;)s+=' \\ /|'[x>y-2&x<n-y&(k=x+y&3,x>n-y-6|x<y+4|y<2)?y&1?k:k+1&4:0];return s}

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

বাহ্যিক লুপে, y n * 2-1 থেকে -1 পর্যন্ত পুনরাবৃত্তি করে । অভ্যন্তরীণ লুপে, x * 4-1 থেকে -1 পর্যন্ত n এর পুনরাবৃত্তি করে । আমরা k = (x + y) এবং 3 সেট করেছি , যা হেক্সাগন তৈরি করতে ব্যবহৃত অন্তর্নিহিত প্যাটার্ন।

নীচে n = 4 এর জন্য ফলাফল প্রাপ্ত গ্রিড রয়েছে :

     15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0 -1
   +---------------------------------------------------
 7 |  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2
 6 |  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2  1
 5 |  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0
 4 |  3  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3
 3 |  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2
 2 |  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2  1
 1 |  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0
 0 |  3  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3
-1 |  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2

এমনকি সারিগুলিতে, একটি ঘর যখন পাইপের অক্ষর দ্বারা পূর্ণ হয় কে = 3 এবং অন্যথায় কোনও স্থানপাইপটি আমাদের রেফারেন্স স্ট্রিংয়ের 5 ম অক্ষর" \ /|", সুতরাং সঠিক সূচকটি (k + 1) & 4 দ্বারা দেওয়া হয়েছে।

বিজোড় সারিগুলিতে, প্রতিটি ঘর সরাসরি রেফারেন্স স্ট্রিংয়ের সাথে সম্পর্কিত অক্ষরের সাথে পূর্ণ হয়:

  • k = 0 → স্থান
  • কে = 1 → "\"
  • k = 2 → স্থান
  • কে = 3 → "/"

নীচে আমাদের আপডেট করা উদাহরণ (বিন্দু দিয়ে স্থানগুলি স্থান করা হয়েছে):

     15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0 -1
   +---------------------------------------------------
 7 |  .  \  .  /  .  \  .  /  .  \  .  /  .  \  .  /  .
 6 |  .  .  |  .  .  .  |  .  .  .  |  .  .  .  |  .  .
 5 |  .  /  .  \  .  /  .  \  .  /  .  \  .  /  .  \  .
 4 |  |  .  .  .  |  .  .  .  |  .  .  .  |  .  .  .  |
 3 |  .  \  .  /  .  \  .  /  .  \  .  /  .  \  .  /  .
 2 |  .  .  |  .  .  .  |  .  .  .  |  .  .  .  |  .  .
 1 |  .  /  .  \  .  /  .  \  .  /  .  \  .  /  .  \  .
 0 |  |  .  .  .  |  .  .  .  |  .  .  .  |  .  .  .  |
-1 |  .  \  .  /  .  \  .  /  .  \  .  /  .  \  .  /  .

নিম্নলিখিত সূত্রগুলিতে, আমরা সংজ্ঞায়িত করি এন = এন * 4 পঠনযোগ্যতার জন্য (যদিও একই ভেরিয়েবল কোডে ব্যবহৃত হয়)।

ত্রিভুজ আকারটি পরীক্ষা করে প্রাপ্ত হয়:

  • x> y - 2 right ডান কোণটি সরান
  • এবং x <N - y the বাম কোণটি সরান

এবং পরীক্ষা করে অভ্যন্তরীণ অংশটি সরানো হয়েছে:

  • x> এন - ওয়াই - 6 কেবল বাম প্রান্তটি রাখে
  • বা x <y + 4 কেবল ডান প্রান্তটি রাখে
  • বা y <2 only কেবল নীচের প্রান্তটি রাখে

ডেমো


নেই [x>y-2&x<n-y&(x>n-y-6|x<y+4|y<2)&&y&1?x+y&3:x-~y&4]কাজ করে?
নীল

@ নীল হুম, আমি তা মনে করি না। আমাদের ত্রৈমাসিক প্রকাশের চারপাশে প্রথম বন্ধনী প্রয়োজন এবং (x+y+1)&4এটি এর মতো নয় (((x+y)&3)+1)&4
আর্নাউল্ড

না, অবশ্যই না। আমি কী ভাবছিলাম ...
নীল

3

জেলি ,  62  61 বাইট

বর্তমানে ছয়টি ছক্কা রয়েছে।

_‘<×⁸>6
Rµ‘⁾| ẋ⁾/\ẋ⁸¤ż;/K€µ⁶ðMṀ_6r6ẋð¦"Jç¥
ḤḶUẋ@€⁶;"ǵ-ịṙ6ṭ⁸Y

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

কিভাবে?

_‘<×⁸>6 - Link 1, should we eat the praline? row number, triangle size
_       - row number minus triangle size
 ‘      - plus one
  <     - less than triangle size? (1 if one of the last rows else 0)
   ×⁸   - multiply by row number   (row number or 0)
     >6 - greater than 6?          (row number if between row 6 and last two rows)

Rµ‘⁾| ẋ⁾/\ẋ⁸¤ż;/K€µ⁶ðMṀ_6r6ẋð¦"Jç¥ - Link 2, build a solid triangle: triangle size
                                              (except the very bottom row)
R                                  - range: [1,2,...,size]
 µ                                 - monadic chain separation, call that r
  ‘                                - increment: [2,3,...,size+1]
   ⁾| <space                       - literal "| "
      ẋ                            - repeat: ["| | ","| | | ",...]
            ¤                      - nilad followed by link(s) as a nilad:
       ⁾/\                         -   literal "/\"
           ⁸                       -   link's left argument, r
          ẋ                        -   repeat (vectorises): ["/\","/\/\",...]
             ż                     - zip the two repeated lists together: [["/\","| | "],["/\/\","| | | "],...]
              ;/                   - reduce by concatenation: ["/\","| | ","/\/\","| | | ",...]
                K€                 - join with spaces for €ach: ["/ \","|   |  ","/ \ / \","|   |   |  ",...]
                  µ                - monadic chain separation call that s
                                 ¥ - last two links a a dyad:
                               J   -   range(length(s))  
                                ç  -   call the last (1) link as a dyad (left = result of J, right = size)
                              "    - zip with: (call those d)
                    ð       ð¦     -   apply to indexes:
                   ⁶               -   a literal space character
                     M             -     indexes of maximal elements in an element of s (a row)
                      Ṁ            -     maximum (this is the rightmost non-space index, MṀ working like length ignoring trailing spaces)
                       _6          -     subtract 6  (6 indexes back from the right)
                         r6        -     range from there to 6, i.e [l-6,l-7,...,6]
                           ẋ       -     repeat d times (1 or 0), thus applying to the middle rows but not the bottom and top ones.

ḤḶUẋ@€⁶;"ǵ-ịṙ6ṭ⁸Y - Main link: triangle size
Ḥ                  - double(size)
 Ḷ                 - unlength: [0,1,2,...,double(size)-1]
  U                - upend: [double(size)-1,...,2,1,0]
      ⁶            - literal space character
   ẋ@€             - repeat for €ach with reversed arguments ["  ...  ",...,"  "," ",""]
         Ç         - call the last link (2) as a monad(size)
       ;"          - zip with concatenation (zips the leading spaces with the solid triangle body)
          µ        - monadic chain separation, call that t
           -ị      - index -1 (last but one row of t)
             ṙ6    - rotate left by 6 (any number congruent to 2 mod 4 would do)
               ṭ⁸  - tack to t (add this new row on)
                 Y - join all the rows by new lines
                   - implicit print

>ব্যাখ্যাটিতে একটি মিসিং রয়েছে ( <space)
রোমান গ্রাফ

@ রোমানগ্রাফ ধন্যবাদ ধন্যবাদ আমি ব্যাখ্যাটি সম্পাদনা করেছি! যদি আপনি " ব্যাখ্যার স্থানের নীচে ভুল তথ্যযুক্ত" এর চেয়ে বেশি বোঝাতে চান তবে আমাকে জানান।
জোনাথন অ্যালান


1

গণিত, 155 বাইট

""<>Table[If[i+j<d||i-j>d+1||i+j>d+5&&i-j<d-3&&j<d-1," ",Switch[Mod[i+d+{j,-j},4],{1,3},"/",{3,1},"\\",{1,1},"|",_," "]],{j,(d=2#)+1},{i,4#+1}]~Riffle~"\n"&

\nএকটি নতুন লাইন দিয়ে প্রতিস্থাপিত সঙ্গে।

আরও পঠনযোগ্য:

"" <> Table[
    If[i+j < d || i-j > d+1 || 
      i+j > d+5 && i-j < d-3 && j < d-1, " ", 
     Switch[Mod[i+d+{j,-j}, 4], {1, 3}, "/", {3, 1}, 
      "\\", {1, 1}, "|", _, " "]], {j, (d=2#)+1}, {i, 4#+1}]~
   Riffle~"\n" &

অক্ষরের একটি অ্যারের, দ্বারা সূচীবদ্ধ তৈরি করে আমি 1 থেকে 4 থেকে এন +1 অনুভূমিকভাবে এবং 2 1 থেকে এন +1 উল্লম্বভাবে। প্রথমত, Switch[Mod[i+d+{j,-j},4],{1,3},"/",{3,1},"\\",{1,1},"|",_," "]একটি ষড়ভুজ গ্রিড পূরণ করে:

 \ / \ / \ / \ / 
  |   |   |   |  
 / \ / \ / \ / \ 
|   |   |   |   |
 \ / \ / \ / \ / 
  |   |   |   |  
 / \ / \ / \ / \ 
|   |   |   |   |
 \ / \ / \ / \ / 

তারপরে এটি অসম্পূর্ণ ত্রিভুজটির বাইরে If[i+j<d||i-j>d+1||i+j>d+5&&i-j<d-3&&j<d-1," ",...]দিয়ে প্রতিস্থাপন করে " "

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