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


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.