আবার ইউক্লিডিয়ান অ্যালগরিদম ভিজ্যুয়ালাইজ করুন


10

কার্য

দুটি ধনাত্মক পূর্ণসংখ্যা দেওয়া হয়েছে:

  1. দুটি পূর্ণসংখ্যার দ্বারা নির্দিষ্ট আকারের সাথে আয়তক্ষেত্র আঁকুন।
  2. আর কোনও স্থান না পাওয়া পর্যন্ত পদক্ষেপ 3 পুনরাবৃত্তি করুন।
  3. (অবশিষ্ট) আয়তক্ষেত্রের তিনদিকে স্পর্শ করে বৃহত্তম বর্গ আঁকুন এবং পূরণ করুন।
  4. ফলাফল আয়তক্ষেত্র আউটপুট।

উদাহরণ

উদাহরণস্বরূপ, আমাদের ইনপুটটি 6এবং 10

আমরা আকারের ফাঁকা আয়তক্ষেত্রটি 6 x 10 আঁকবো:

xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx
xxxxxxxxxx

বারবার স্কোয়ারগুলি পূরণ করার পরে, আমরা এটি কি পেতে পারি:

aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaaccdd
aaaaaaccdd

এখানে আছে 4 স্কোয়ার এখানে আছেন ( a, b, c, d), পার্শ্ব দৈর্ঘ্য সঙ্গে প্রতিটি 6, 4, 2, 2যথাক্রমে।

বিধি এবং স্বাধীনতা

  1. আপনাকে অবশ্যই প্রতিটি স্কোয়ারের জন্য আলাদা আলাদা অক্ষর ব্যবহার করতে হবে।
  2. সমর্থিত অক্ষরগুলি যতক্ষণ না সমস্ত মুদ্রণযোগ্য অক্ষর এবং সেখানে অন্তত 10অক্ষর সমর্থিত হয় ততক্ষণ আপনি কোন অক্ষরকে সমর্থন করবেন তা চয়ন করতে পারেন ।
  3. উপরের ধাপ 3 এর প্রতিটি পুনরাবৃত্তিতে আপনার দুটি পছন্দ আছে (শেষ পুনরাবৃত্তিকে বাদ দিয়ে যেখানে আপনার কেবল একটি পছন্দ রয়েছে) have উভয় পছন্দ বৈধ।
  4. প্রয়োজনীয় স্কোয়ারের সংখ্যা আপনার সমর্থিত অক্ষরের সংখ্যার বেশি হবে না।
  5. আপনি যে কোনও ক্রমে সমর্থন করেন এমন অক্ষরগুলি দিয়ে আপনি স্কোয়ারগুলি পূরণ করতে পারেন ।

Testcases

ইনপুট: 6, 10

আউটপুট:

aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaaccdd
aaaaaaccdd

অথবা

aaaaaaccdd
aaaaaaccdd
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb
aaaaaabbbb

অথবা

bbbbaaaaaa
bbbbaaaaaa
bbbbaaaaaa
bbbbaaaaaa
ccddaaaaaa
ccddaaaaaa

অথবা

ccddaaaaaa
ccddaaaaaa
bbbbaaaaaa
bbbbaaaaaa
bbbbaaaaaa
bbbbaaaaaa

অথবা

ddddddaaaa
ddddddaaaa
ddddddaaaa
ddddddaaaa
ddddddbbcc
ddddddbbcc

ইনপুট: 1,1

আউটপুট:

a

ইনপুট: 1,10

আউটপুট:

abcdefghij

ইনপুট: 10,1

আউটপুট:

a
b
c
d
e
f
g
h
i
j

মনে রাখবেন যে উপরের টেস্টকেসগুলির জন্য আমি অন্তর্ভুক্ত করতে পারি তার চেয়ে আরও বেশি সম্ভাবনা রয়েছে।

স্কোরিং

এটি । বাইট জিতে সংক্ষিপ্ত উত্তর।

স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।


উত্তর:


3

কাঠকয়লা , 30 বাইট

NδNγFβ¿×γδ«UOγδι¿‹γδA⁻δγδA⁻γδγ

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

Nδ      Input d
Nγ      Input g
Fβ      For i In ['a' ... 'z']
 ¿×γδ«   If g * d
  UOγδι   Oblong g, d, i
  ¿‹γδ    If g < d
   A⁻δγδ   d = d - g
   A⁻γδγ   Else g = g - d

বিরক্তিকরভাবে চারকোলের ওবলং কমান্ড 0কোনও মাত্রা গ্রহণ করবে না , যার জন্য আমার 4 বাইট খরচ হয়। অন্য পদ্ধতিটি লুপ করার সময় হবে g * d, তবে তারপরে আমি কীভাবে পুনরাবৃত্তি করব b(যা ছোট হাতের অক্ষরের সাথে পূর্বনির্ধারিত) work


ওফস, দুঃখিত, এটি সচেতন ডিজাইনের সিদ্ধান্ত ছিল, আপনার কি মনে হয় নেতিবাচক ইনপুটগুলিকেও অনুমতি দেওয়া উচিত?
ASCII- কেবল

@ এএসসিআইআই-কেবলমাত্র বর্তমান আচরণ (0 এবং নেতিবাচক উভয়)? আমার সেরা ধারণাটি হ'ল নেতিবাচক ডান / নীচের দিকে বাম / শীর্ষে টানবে। (এছাড়াও, আমি যদি ব্যবহার করি তবে W×γδপ্রতিবার কীভাবে আলাদা চিঠিটি প্রিন্ট করব?)
নীল

@ নীল বাহ, আমি আপনাকে বোঝাতে চাইছি যে বিরক্তিকর হবে।
ম্যাজিক অক্টোপাস আরন



1

জেলি , 32 বাইট

Ṁ,ạ/y
³,⁴ÇÐĿp/€Fs2
pµ¢ṣLµ€+95ỌsY

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

Ṁ,ạ/yআপনি ব্যাখ্যা চান? এটা এখানে.

Ṁ,ạ/y          - perform one step of the Euclidean Algorithm, input 2-element list
 ,             - pair of the following two:
Ṁ              -  maximum of the the input list
  ạ/           -  absolute difference of the two elements
    y          - use this as a mapping on the input.

³,⁴ÇÐĿp/€Fs2   - apply Euclidean Algorithm
³,⁴            - start with the pair [input 1, input 2]
   Ç           - apply a step of the Euclidean Algorithm
    ÐĿ         - repetitively until the results repeat
      p/€      - take the Cartesian product of each step
         Fs2   - flatten and split into all coordinate pairs of letters

pµ¢ṣLµ€+95ỌsY
p              - Cartesian product of inputs: provides all possible coordinate pairs.
 µ   µ€       - for each coordinate
   ṣL         - find the number of times it is included in
  ¢           - the above list of covered coordinates.
       +95Ọ   - convert number of times to letters
           s  - split into rows
            Y - join by newlines.

পরিবর্তে অন্তর্নিহিত যুক্তি ব্যবহার করে আমি সম্ভবত আরও কিছু গল্ফ করতে পারি ³,⁴


1

হাস্কেল , 181 বাইট

import Data.List
(['!'..'~']&)
a#[]=a
a#b=zipWith(++)a$transpose b
(s&a)b|b<1=[]|b>a=transpose$s&b$a|n<-div a b,(t,u)<-splitAt n s=foldl1(#)((<$[1..b]).(<$[1..b])<$>t)#(u&b$mod a b)

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

10বাইটের জন্য আপনি তার পরিবর্তে একটি দুর্দান্ত সর্পিল পেয়েছেন :)

!!!!!!!!!!!!!$$$#####
!!!!!!!!!!!!!$$$#####
!!!!!!!!!!!!!$$$#####
!!!!!!!!!!!!!%%'#####
!!!!!!!!!!!!!%%&#####
!!!!!!!!!!!!!""""""""
!!!!!!!!!!!!!""""""""
!!!!!!!!!!!!!""""""""
!!!!!!!!!!!!!""""""""
!!!!!!!!!!!!!""""""""
!!!!!!!!!!!!!""""""""
!!!!!!!!!!!!!""""""""
!!!!!!!!!!!!!""""""""

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

Ungolfed

(#)অপারেটর রাখে একে অপরের সাথে আগামী দুই ম্যাট্রিক্স কিন্তু সঠিক, যেমন transposes:

!!!                !!!"
!!! # "#$    ->    !!!#
!!!                !!!$

a # [] = a
a # b  = zipWith (++) a $ transpose b

এটি মূলত ইউক্লিডের অ্যালগরিদমের পুনরাবৃত্তিমূলক সংস্করণ, তবে বিভাজনকারী এবং বাকী অংশগুলি ভুলে গিয়ে পুনরায় ফিরিয়ে দেওয়ার পরিবর্তে gcdএটি এর থেকে স্কোয়ার তৈরি করে এবং এর সাথে এটি সংগ্রহ করে (#)sপরিবর্তনশীল অক্ষর বাকি যে আমরা ব্যবহার করতে পারেন:

(s & a) b
  | b == 0 = []                     -- Base case
  | b > a = transpose $ (s & b) a   -- In this case we can just flip the arguments and rotate the result by 90 degrees
  | n <- div a b                    -- set n to the number of squares we need
  , (t,u) <- splitAt n s =          -- take n characters, ..
               ((<$[1..b]).(<$[1..b]) <$> t)                     -- .. build squares from them and ..
    foldl1 (#)                                                   -- put them next to each other
                                             (u & b $ mod a b)   -- recursively build the smaller squares with the remaining characters..
                                            #                    -- .. flip them and put them next to the previous one(s)

আসল ফাংশনটি সমস্ত মুদ্রণযোগ্য অক্ষরের একটি স্ট্রিং সহ কেবল উপরে থেকে ফাংশনটিকে কল করে:

(['!'..'~']&)

আপনার import Data.Listব্যবহারের জন্য গণনা করা দরকার transpose
অ্যান্ডারস কাসের্গ

আমি করেছি কিন্তু যখন আমি পয়েন্টফ্রি ফাংশন ব্যবহার করি তখন আমদানি করা সম্ভব নয় (আমার জ্ঞানের কাছে)। তবে আমি এটিকে বাইট গণনায় অন্তর্ভুক্ত করেছি, দয়া করে টিআইও দেখুন যেখানে বাইট গণনাটি আসলে 164..
0

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