অষ্টভুজ শব্দ বানানো


14

গত বৃহস্পতিবার ব্যবহারকারী @ স্পুকি জেঙ্গার স্কোয়ার্ড ওয়ার্ড তৈরির বিষয়ে তার / তার প্রথম চ্যালেঞ্জটি নিয়ে আমাদের আনন্দিত করেছেন । আমরা পক্ষের সংখ্যা দ্বিগুণ হলে কী হবে?

চ্যালেঞ্জ

আপনার প্রয়োজনীয় যে কোনও যুক্তিসঙ্গত বিন্যাসে ( string, charঅ্যারে ...) ইনপুট হিসাবে একটি স্ট্রিং নিন এবং পরবর্তী উদাহরণগুলির মতো ইনপুটটির অষ্টভুজ উপস্থাপনা (কোনও যুক্তিসঙ্গত বিন্যাসেও:, এর stringতালিকা string, charম্যাট্রিক্স ...) আউটপুট করুন :

Input: golf
Output:

   golf
  o    l
 l      o
f        g
l        o
o        l
g        f
 o      l
  l    o
   flog


Input: HelloWorld
Output:

         HelloWorld
        e          l
       l            r
      l              o
     o                W
    W                  o
   o                    l
  r                      l
 l                        e
d                          H
l                          e
r                          l
o                          l
W                          o
o                          W
l                          o
l                          r
e                          l
H                          d
 e                        l
  l                      r
   l                    o
    o                  W
     W                o
      o              l
       r            l
        l          e
         dlroWolleH


Input: a
Output:

a


Input: ab
Output:

 ab
b  a
a  b
 ba


Input: code golf
Output:

        code golf
       o         l
      d           o
     e             g

   g                 e
  o                   d
 l                     o
f                       c
l                       o
o                       d
g                       e

e                       g
d                       o
o                       l
c                       f
 o                     l
  d                   o
   e                 g

     g             e
      o           d
       l         o
        flog edoc

মন্তব্য

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

5
"আমরা যদি পাশের সংখ্যা দ্বিগুণ করি?" <- তারপরে কাঠকয়লা এখনও জিততে পারে
লিকি নুন

প্রস্তাবিত টেস্টকেস:code golf
লিকি নুন

@ লিকিউন কে <Space>মুদ্রণযোগ্য বলে বিবেচনা করা হয়?
ভি। কুর্তোইস

2
@ ভি.কোর্তোইস হ্যাঁ
লিকি নুন

@ লিকিউন যোগ করেছেন পরীক্ষার মামলা।
চার্লি

উত্তর:


10

কাঠকয়লা , 16 বাইট (10 বাইট নন-কেপটিং)

F⁸«✂θ⁰±¹↷¹A⮌θθ»θ

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

F⁸«                 Repeat for each side of the octagon
   ✂θ⁰±    ¹        Print the input except the last character
        ↷¹          Rotate 45° clockwise
          A⮌θθ      Reverse the input string
              »θ    Print the input again, to handle the length 1 case

বিকল্প দৈর্ঘ্য 1 ফিক্স, এছাড়াও 16 বাইট: ভার্বোজ সংস্করণ।

PθF⁸«✂θ⁰±¹↷¹A⮌θθ

একটি কাঠকয়লা বাগফিক্সের অর্থ হল যে নিম্নলিখিত 10-বাইট কোডটি এখন কাজ করে: ভার্বোজ সংস্করণ।

F⁴«θ←↘⮌θ↖⟲

মনে হচ্ছে এটি ঠিক এই করা উচিত। লোল
ম্যাজিক অক্টোপাস উর্ন 14

1
উম্ম, আমি মনে করি code golfনা এটি কাজ করে?
এরিক আউটগল্ফার 15

ওহ, এবং এই সত্য 16 বাইট (প্রতিস্থাপন হয় θθθসঙ্গে θθ»θ)।
এরিক আউটগল্ফার

@ এরিকথিউটগলফার ওফস, এর জন্য দুঃখিত, আমি দৈর্ঘ্য 1 মামলার জন্য আমার ফিক্সটি পরীক্ষা করার জন্য ভাবি নি ... প্রশ্নটিতে আমার পরীক্ষার রেকর্ডটি খুব ভাল হয়নি?
নীল

@ নীল তবে বিষয়টি নিয়ে code golfকী? আমি মনে করি চারকোল কীভাবে ইনপুট নেয় তার সাথে এটি করা দরকার, যা দুর্ভাগ্যক্রমে, এই চ্যালেঞ্জ থেকে পুরোপুরি অযোগ্য ঘোষণা করে কারণ এটি পরিলক্ষিত হতে পারে না।
এরিক আউটগল্ফার 15

5

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

f=
s=>[...Array((l=s.length-1)*3+1)].map((_,i,a)=>a.map((_,j)=>s[i+j-l?l*5-i-j?i+l*2-j?j+l*2-i?i%(l*3)?j%(l*3)?-1:j?i-l:l+l-i:i?l+l-j:j-l:j:l-i:l*3-i:i]||` `))
<input oninput=o.textContent=this.value?f(this.value).map(function(a){return(a.join``)}).join`\n`:``><pre id=o>

একটি অক্ষরের অ্যারে প্রদান করে।


1
মনে হচ্ছে এটি কেবল 4 দৈর্ঘ্যের স্ট্রিং দিয়ে কাজ করবে
চার্লি

1
@ কার্লোস আলেজো দুঃখিত, যথেষ্ট সাবধানে পরীক্ষা করে নি check সুবিধাজনকভাবে, 2 বাইট সংরক্ষণ করা ঠিক করুন!
নিল

ওহ আমার যে অনেকটা তার্নারি ?:!
এরিক আউটগল্ফার

@ এরিকথ আউটগল্ফার ভাল জিনিস এটি অজগর নয় বা এটি সত্যই ভার্জিক হবে: পি
স্টিফেন

3

গণিত, 247 বাইট

(T=Table;k=Length[s=Characters@#];If[k==1,#,Column[Flatten@{#,T[""<>{s[[i]],T["  ",k/2-2+i],s[[-i]]},{i,2,k}],T[""<>{s[[-i]],T["  ",k+k/2-2],s[[i]]},{i,2,k}],T[""<>{s[[i]],T["  ",3k/2-1-i],s[[-i]]},{i,2,k-1}],StringReverse@#},Alignment->Center]])&

আপনার প্রয়োজন নেই Alignmentএবং আপনি :=পুনরাবৃত্তি হ্রাস করতে বিলম্বিত ( ) ব্যবহার করে বাইটগুলি সংরক্ষণ করতে পারেন s[[i]]এবং s[[-i]]এই ধারণাগুলি সহ আপনি 224 বাইটে নামবেন : (টি = টেবিল; কিউ: = এস [[i]]; আর: = s [[- i]]; কে = দৈর্ঘ্য [এস = অক্ষর @ #]; যদি [কে == 1, #, কলাম [ফ্ল্যাটেন @ {#, টি ["" <> {কিউ, টি ["", কে / ২-২ + আই], আর}, {আই, ২, কে}], টি ["" <> {আর, টি ["", কে + কে / ২-২], কিউ}, {i, 2, কে}], টি ["" <> {কিউ, টি ["", 3 কে / 2-1-আই], আর}, {i, 2, কে-1}], স্ট্রিং রিভার্স @ #}, কেন্দ্র] ]) এবং এছাড়াও, আমার একটি বিকল্প সমাধান রয়েছে যা এই মন্তব্যের সময় কেবল 145 বাইট।
মার্ক এস


2

জাপট , 84 79 বাইট

-5 বাইট @ETH প্রডাকশন ধন্যবাদ।


Ål
VoA{A?(UÅw +Uê)£Y¥V*2+AªY¥V-A?X:SÃ:Vç +U+Vç
Wf cU¬£V?(V*3 ç hUg~Y)+X:XÃcWz2

শীর্ষস্থানীয় নিউলাইন প্রোগ্রামের অংশ। ইনপুট হিসাবে একটি স্ট্রিং নেয় এবং স্ট্রিংগুলির একটি অ্যারের প্রদান করে।

এটি অনলাইন চেষ্টা করুন! সঙ্গে -Rপতাকা নতুন লাইন দিয়ে ফলের অ্যারে যোগদানের জন্য।

আমার গর্বিত কাজ নয়, তবে আমি এটি কমপক্ষে ~ 100 বাইট থেকে নামিয়েছি। আমার ধারণা এখানে শীর্ষ এবং মাঝের অংশগুলি তৈরি করতে হবে, তারপরে উপরের অংশটি যুক্ত করুন, 180 ° ঘোরানো হয়েছিল °


খুশী হলাম। আমি এখনই প্রচুর উন্নতি দেখতে পাচ্ছি না, তবে আপনি আরও দুটি বাইট সংরক্ষণ করতে ভিসি এবং ডাব্লু পরিবর্তন Ul Éকরতে UÅlপারেন: কোডেপেন.আইও
অ্যাডজিনিম

এছাড়াও, AnV ?-> V-A?এবং Uq £->U¬£
ইটিএইচ প্রোডাকশনগুলি

@ ইথ প্রডাকশনগুলি দুর্দান্ত, ধন্যবাদ! বিশ্বাস করতে পারি না আমি ভুলে গেছি ¬
জাস্টিন মেরিনার


1

পিএইচপি 7.1, 230 156 155 বাইট

for($x=$e=strlen($s=$argn)-1;$n<9;$r[$y][$x+=$n+1&3?$n&4?-1:1:0]=$s[$i],$i+=($n+=!$i||$i==$e)&1?:-1)$r[$y+=$n-1&3?$n<6?:-1:0]=$r[$y]?:"";echo join("
",$r);

পাইপ হিসাবে চালান -nRবা এটি অনলাইনে চেষ্টা করুন

ভাঙ্গন

for($x=$e=strlen($s=$argn)-1;   # import to $s, set $e to length-1, init $x
    $n<9;                       # loop through 8 repetitions of string
    $r[$y][
        $x+=$n+1&3?$n&4?-1:1:0      # 3. increment/decrement $x depending on $n
    ]=$s[$i],                       # 4. copy character to current position
    $i+=(
        $n+=!$i||$i==$e             # 5. if first or last character of string, increment $n
    )&1?:-1                         # 6. if odd repetition next, else previous character
)
    $r[
        $y+=$n-1&3?$n<6?:-1:0       # 1. increment/decrement $y depending on $n
    ]=$r[$y]?:"";                   # 2. if empty, init row to string
echo join("\n",$r);             # output

1

গণিত, 168 166 147 127 বাইট

(n=Length@#;b=Array[" "&,3{n,n}-2];Do[l={{1,n+k-1},{k,n-k+1}};l=Join[l,Cross/@l];b=ReplacePart[b,Join[l,-l]->#[[k]]],{k,n}];b)&

এটি এক-চরিত্রের স্ট্রিংয়ের একটি তালিকা নেয় এবং এক-চরিত্রের স্ট্রিংয়ের একটি ম্যাট্রিক্স আউটপুট দেয়।

আমি ব্যবহার করতে প্রতিসাম্য শোষণ 18 বাইট সংরক্ষিত -lএবং Cross/@lযা লাগে একটি ক্রস পণ্য ভালো কিছু দুটি একক 2D ভেক্টর নেওয়া প্রতিটি {x,y}থেকে {-y,x}। মূলত, দুটি প্রাথমিক দিক হ'ল পূর্ব (শীর্ষ প্রান্ত) এবং দক্ষিণ-পশ্চিম (উপরের ডান প্রান্ত)। তারপরে আমরা এগুলির সাথে 90-ডিগ্রি ঘড়ির কাঁটার ঘোরার ঘোড়া যুক্ত করব Cross: বাম প্রান্তের জন্য উত্তর এবং নীচে বাম প্রান্তের জন্য দক্ষিণ পূর্ব। তারপরে আমরা -lকাভার হওয়া চারটি ফ্লিপ করতে ব্যবহার করে অন্য চারটি টুকরো যুক্ত করব।

আপনি এটি স্যান্ডবক্সে এমন কিছু দিয়ে পরীক্ষা করতে পারেন:

(n=Length@#;b=Array[" "&,3{n,n}-2];Do[l={{1,n+k-1},{k,n-k+1}};l=Join[l,Cross/@l];b=ReplacePart[b,Join[l,-l]->#[[k]]],{k,n}];b)&[{"H","e","l","l","o"," ","G","o","l","f"}]//MatrixForm
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.