হেক্সা গল্ফ: ওয়ার্ডাগনস


25

আরও দেখুন: রোটাটাগনস

চ্যালেঞ্জ

ইনপুট হিসাবে একটি স্ট্রিং দেওয়া হয়েছে, এর শব্দভূমি আউটপুট।

Wordagons

একটি ওয়ার্ডাগন হেক্সাগনে স্ট্রিং প্রতিনিধিত্ব করার একটি উপায়। এখন, স্ট্রিং থেকে একটি ওয়ার্ডাগন তৈরি করা যাক hexa:

প্রথমত, আপনি স্ট্রিংয়ের প্রথম অক্ষরটিকে কেন্দ্রের মধ্যে এটি স্থান দিয়ে শুরু করুন:

h

তারপরে, আপনি স্ট্রিংয়ের পরবর্তী অক্ষরটি গ্রহণ করুন এবং ষড়ভুজ স্তরটি যুক্ত করুন:

 e e
e h e
 e e

তারপরে, পরবর্তী স্তরটি যুক্ত করুন:

  x x x
 x e e x
x e h e x
 x e e x
  x x x

শেষ পর্যন্ত শেষ স্তরটি যুক্ত করুন:

   a a a a
  a x x x a
 a x e e x a
a x e h e x a
 a x e e x a
  a x x x a
   a a a a

এবং আপনার কাছে এখন স্ট্রিংয়ের জন্য ওয়ার্ডাগন রয়েছে hexa।

উদাহরণ

আমি আগে প্রস্তুত কিছু এখানে:

hello

    o o o o o
   o l l l l o
  o l l l l l o
 o l l e e l l o
o l l e h e l l o
 o l l e e l l o
  o l l l l l o
   o l l l l o
    o o o o o

PPcg

   g g g g
  g c c c g
 g c P P c g
g c P P P c g
 g c P P c g
  g c c c g
   g g g g

o *

  * * *
 *     *
*   o   *
 *     *
  * * *

(T_T)

    ) ) ) ) )
   ) T T T T )
  ) T _ _ _ T )
 ) T _ T T _ T )
) T _ T ( T _ T )
 ) T _ T T _ T )
  ) T _ _ _ T )
   ) T T T T )
    ) ) ) ) )

নোট করুন যে পিছনে এবং / অথবা নেতৃস্থানীয় নতুন লাইনের অনুমতি রয়েছে।

জয়লাভ

বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।


14
বোনাস পয়েন্ট যদি কেউ হেক্সাগনিতে এটি করে? ;)
— কেভিন ক্রুইজসেন

ইনপুট স্ট্রিংয়ে লাইনফিড থাকতে পারে? আমি মনে করি না এটি কোনও বাস্তবায়ন সমস্যা সৃষ্টি করবে, কেবল অবৈধ ওয়ার্ড্যাগনস উত্পাদন করবে
— হারুন

অ্যারন না, ইনপুট স্ট্রিংটিতে কখনই নিউলাইনগুলি অন্তর্ভুক্ত থাকবে না
— বিটা

আউটপুট যদি কোনও ফাংশন থেকে ফিরে আসা নতুন লাইনের সাথে একটি স্ট্রিং হয় তবে তা ঠিক আছে?
— ড্যানিয়েল

2
ওহো। আমি হতাশ কারণ আমি "ওয়ার্ড-ড্রাগন" হিসাবে শিরোনামটি পড়েছি ...
— mbomb007

উত্তর:



19

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

s=input()
l=len(s)
while 1:l-=1;y=abs(l);print' '*y+' '.join(s[:y:-1]+s[y]*y+s[y:])

ওয়ার্ডাগন মুদ্রণ করে এবং তারপরে ক্র্যাশ হয় (যা কেবল এসটিডিআরআরে প্রিন্ট করে)।

উদাহরণ:

% python2.7 wordagon.py <<<'"abcde"' 2&>/dev/null
    e e e e e
   e d d d d e
  e d c c c d e
 e d c b b c d e
e d c b a b c d e
 e d c b b c d e
  e d c c c d e
   e d d d d e
    e e e e e

xnor 5 বাইট সংরক্ষণ করেছে ধন্যবাদ!


2
মার্জিত সমাধান।
— ডেভিডসি

1
আপনি ত্রুটি দিয়ে শেষ করে এবং শেষ yকরে লুপ করতে পারেন n=len(s)\nwhile 1:n-=1;y=abs(n);...।
— xnor

10

ভিম, 92 বাইট

:se ri|s/./ &/g
ⓋCⓇ"Ⓓ␛$vpmlmrqqYpi ␛`ljxxhmlylv`rjlmr:s/\%V\(.\)./Ⓡ" /g
@qq@qVdy2G:g/^/m0
Gp

বৃত্তাকার চিঠিগুলি Control+ চিঠি উপস্থাপন করে ; আমি পালাচ্ছি।

asciicast


3
এটি কী কী স্ট্রোক হিসাবে গণ্য হবে না?
— সোরেন

1
@ মূ_ও_আল_ডো নং এটি কোড-গল্ফ (সম্পাদক গল্ফের বিপরীতে), সুতরাং সমস্ত উত্তর বাইটে স্কোর করা উচিত।
— মার্টিন ইন্ডার

দ্বিতীয়টি @qআমার জন্য অসীম লুপের কারণ। এটি অপসারণ করা হলে এটি পুরোপুরি কাজ করে।
— এমটিসিওস্টার

6

ম্যাথামেটিকাল 100 219 বাইট

যদি ASCII- আর্ট টার্মিনাল-আর্ট না প্রয়োজন তবে এটি বৈধ হওয়া উচিত।

আমার আগের জমাটি ভুলভাবে ষড়ভুজের পরিবর্তে একটি তারা আঁকল। আমি দেখতে পেলাম না আমি কেমন ছিলাম!

c = CirclePoints@6;
f@s_:=Graphics[{Text[s~StringPart~1,{0,0}],Flatten@Table[Text[StringPart[s,n+1],#]&/@Subdivide[Sequence@@#,n]&/@Partition[Riffle[(n)CirclePoints@6,RotateLeft[n CirclePoints@6]],2],{n,1,StringLength@s-1}]},BaseStyle->20]

CirclePoints@6 কেন্দ্রটি আসল অবস্থানে রয়েছে বলে ধরে নিয়ে একটি ইউনিট ষড়ভুজের শীর্ষকোণগুলি প্রদান করে।

Subdivideপ্রতিবেশী উল্লম্ব জন্য স্থানাঙ্কগুলি আইংটি সংশ্লিষ্ট প্রান্তের সাথে সমানভাবে ব্যবধানযুক্ত অবস্থানগুলি আবিষ্কার করে।

StringLength -1ইনপুট স্ট্রিংয়ের মধ্য দিয়ে 1 এর একটি কাউন্টার শব্দের প্রতিটি স্তর পৃথকভাবে পরিচালনা করতে দেয়। বৃদ্ধি
হিসাবে n, তেমনি উত্স থেকে প্রতিটি প্রান্তিকের সম্পর্কিত দূরত্ব হয়।

Text[s~StringPart~1,{0,0}] উত্স এ ইনপুট প্রথম অক্ষর মুদ্রণ।


চ @ "Wordagon"

wordagon


কৌতূহলের জন্য, তারকা সংস্করণটি এটির মতো দেখাচ্ছে। আমি জানি, এটি ছিল উপায় চিহ্ন বন্ধ। এটি কেবলমাত্র হেক্সাগনের শীর্ষে অক্ষরগুলি দেখিয়েছিল।

Graphics@Table[Text[Style[StringPart[#, r + 1], 54], r {Cos@t, Sin@t}], {t, 0, 2π, π/3}, {r, 0, StringLength@# - 1}] &["Hexa"]

ছয়


5
আপনি কি তারার মত দেখতে পোস্ট করতে পারেন? : ডি
— বিটা ক্ষয়

অবশ্যই। এটি এখন পোস্ট করা হয়েছে।
— ডেভিডসি

2
বাহ, এটি একটি দুর্দান্ত তারকা
— বিটা ডেকে

3

রুবি, 82 বাইট

->s{n=s.size-1
(r=-n..n).map{|i|(" "*k=i.abs)+r.map{|j|s[[k+j,k,-j].max]}*" "}*$/}

1-n..n-1i = y এবং j = x উভয় দিক দিয়েই পুনরাবৃত্তি হয় । প্রতিটি লাইনে শীর্ষস্থানীয় স্থান ছাড়াই, s সূচকটি থেকে কোনও চরিত্র বাছাইয়ের ফলাফল হিসাবে আউটপুট নীচের মত দেখাচ্ছে [[i.abs+j,i.abs,-j].max]। নেতৃস্থানীয় স্পেস যোগ করা প্রয়োজনীয় ষড়ভুজ গঠন করে।

f f f f
f l l l f
f l o o l f
f l o G o l f
f l o o l f
f l l l f
f f f f

পরীক্ষা প্রোগ্রামে অসম্পূর্ণ

f=->s{
  n=s.size-1             n=string length - 1
  (r=-n..n).map{|i|      iterate from -n to n, build an array of lines
    (" "*k=i.abs)+       k=i.abs. Start each line with k spaces.
    r.map{|j|            iterate from -n to n, build an array of characters.
      s[[k+j,k,-j].max]  select character from s (store null string in array if index past end of string)
    }*" "                concatenate the array of characters into a line, separated by spaces
  }*$/                   concatenate the array of lines into a single string, separate by newlines
}

puts f[gets.chomp]

সাধারণ আউটপুট

   f f f f
  f l l l f
 f l o o l f
f l o G o l f
 f l o o l f
  f l l l f
   f f f f

3

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

s=>[...Array((l=s.length-1)*2+1)].map((_,i,a)=>a.map((_,j)=>s[Math.max(i-l,l-i,j-l,i-j,l+l-i-j)]||``).join` `).join`\n`

যেখানে \nআক্ষরিক নিউলাইন চরিত্রের প্রতিনিধিত্ব করে। হ্যাক্সপ্লসোসিভ এএসসিআইআই-আর্ট চ্যালেঞ্জের আমার উত্তরের ভিত্তিতে যদিও সমাধানের অংশগুলি @ লেভেলরিভারস্টের রুবির উত্তরটির সাথে সাদৃশ্যপূর্ণ। Math.maxউত্পাদনের বিভিন্ন উপাদান নিম্নলিখিত আউটপুট উত্পাদন করে l=3:

    i - l           l - i           j - l            i - j        l + l - i - j
- - - - - - -   3 3 3 3 3 3 3   - - - 0 1 2 3    0 - - - - - -    6 5 4 3 2 1 0
- - - - - - -   2 2 2 2 2 2 2   - - - 0 1 2 3    1 0 - - - - -    5 4 3 2 1 0 -
- - - - - - -   1 1 1 1 1 1 1   - - - 0 1 2 3    2 1 0 - - - -    4 3 2 1 0 - -
0 0 0 0 0 0 0   0 0 0 0 0 0 0   - - - 0 1 2 3    3 2 1 0 - - -    3 2 1 0 - - -
1 1 1 1 1 1 1   - - - - - - -   - - - 0 1 2 3    4 3 2 1 0 - -    2 1 0 - - - -
2 2 2 2 2 2 2   - - - - - - -   - - - 0 1 2 3    5 4 3 2 1 0 -    1 0 - - - - -
3 3 3 3 3 3 3   - - - - - - -   - - - 0 1 2 3    6 5 4 3 2 1 0    0 - - - - - -

সর্বাধিক মান নেওয়া হয় এবং এর চেয়ে বেশি মানগুলি lসরানো হয়, ফলে ষড়ভুজ আকার তৈরি হয়, যখন বাকী মানগুলি স্ট্রিং থেকে অক্ষরগুলিতে মানচিত্র করে:

6 5 4 3 3 3 3      3 3 3 3          a a a a
5 4 3 2 2 2 3     3 2 2 2 3        a x x x a
4 3 2 1 1 2 3    3 2 1 1 2 3      a x e e x a
3 2 1 0 1 2 3   3 2 1 0 1 2 3    a x e h e x a
4 3 2 1 1 2 3    3 2 1 1 2 3      a x e e x a
5 4 3 2 2 2 3     3 2 2 2 3        a x x x a
6 5 4 3 3 3 3      3 3 3 3          a a a a

1

05 এ বি 1 ই , 31 বাইট

R.pvy`¹gN-©×NFs.ø}Sðý®ð×ì})¦«»

ব্যাখ্যা

ষড়ভুজের উপরের অংশটি তৈরি করতে প্রতিসাম্য ব্যবহার করে
তারপরে নিচের অংশটি তৈরি করে mirror

R.pv                     }       # for each prefix of the reversed string
                                 # ['f', 'fl', 'flo', 'floG']
    y`                           # split into chars, ex: 'f', 'l', 'o'
      ¹gN-©×                     # repeat the last char len(input)-N times, 
                                 # where N is the 0-based list index of the current prefix
                                 # ex: 'oo'
            NF   }               # N times do
              s.ø                # surround current char with the next char on stack
                                 # ex: 'floolf'
                  Sðý            # insert spaces between each letter, ex: 'f l o o l f'
                     ®ð×ì        # prefix string with len(input)-N spaces
                                 # ex: '  f l o o l f'
                          )      # wrap all strings in a list
                           ¦    # create a reversed copy of the list and 
                                 # remove the first item (as we only need the middle once)
                             «»  # concatenate the lists and merge with newlines

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



0

পিএইচপি - 202 বাইট

$w=$argv[1];$l=$i=$a=strlen($w)-1;while(-$l<=$i){$s=join(" ",str_split(str_repeat($w[$l],($a-1)/2).substr($w,$a?$a:1,$l+1),1));echo str_pad("",$a).strrev($s).($a%2?" ":" {$w[$a]} ")."$s
";$a=abs(--$i);}

কমান্ড লাইন থেকে ব্যবহার:

php.exe -r "put the escaped code here" "put your desired word here"

উদাহরণ স্বরূপ:

php.exe -r "$w=$argv[1];$l=$i=$a=strlen($w)-1;while(-$l<=$i){$s=join(\" \",str_split(str_repeat($w[$l],($a-1)/2).substr($w,$a?$a:1,$l+1),1));echo str_pad(\"\",$a).strrev($s).($a%2?\" \":\" {$w[$a]} \").\"$s\n\";$a=abs(--$i);}" "example"

টেস্ট স্যুট ।

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