মুন ফেজ আঁকুন


20

চ্যালেঞ্জ

চাঁদের পর্যায়টি দেওয়া হয়েছে, এটি ASCII শিল্প ব্যবহার করে আঁকুন।

আপনার প্রোগ্রামে অবশ্যই অমাবস্যা, ওয়েক্সিং ক্রিসেন্ট, প্রথম ত্রৈমাসিক, ওয়াক্সিং গিব্বস, পূর্ণিমা, গিব্বাসকে হারিয়ে যাওয়া, শেষ কোয়ার্টারে এবং ক্রিসেন্টটি নিখোঁজ করতে হবে। আপনার ইনপুটটি পূর্ণসংখ্যা হবে।

0 -> new moon
1 -> waxing crescent
2 -> first quarter
3 -> waxing gibbous
4 -> full moon
5 -> waning gibbous
6 -> last quarter
7 -> waning crescent

এএসসিআইআই আর্ট সমস্ত 16x8 গ্রিডে স্থাপন করা হয়েছে (কারণ চরিত্রের মাত্রা অনুপাত)। আপনি যে .কোনও চরিত্রের সাথে এবং #অন্য কোনও সাদা-স্থানের অক্ষর দ্বারা প্রতিস্থাপন করতে পারেন ।

অমাবস্যার জন্য আউটপুট হওয়া উচিত:

................
................
................
................
................
................
................
................

ওয়াক্সিং ক্রিসেন্টের জন্য:

..........######
............####
.............###
.............###
.............###
.............###
............####
..........######

প্রথম প্রান্তিকে:

........########
........########
........########
........########
........########
........########
........########
........########

গিম্বল ওয়াক্সিংয়ের জন্য:

......##########
....############
...#############
...#############
...#############
...#############
....############
......##########

এবং পূর্ণিমার জন্য:

################
################
################
################
################
################
################
################

ডুবে যাওয়া ক্রিসেন্টটি কেবল প্রতিটি লাইনকে বিপরীতমুখী, ক্রমশ গিবিউস এবং মোমড়ানো গিব্বাসের সাথে এবং প্রথম এবং শেষের ত্রৈমাসিকের সাথে মোমাকৃতির অর্ধচন্দ্রাকর্ষণ is

বিধি

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


"যদিও এতে কোনও পার্থক্য করা উচিত নয়" - আমাকে একটি বাইট বাঁচিয়েছিলেন (আমি আশা করি এটি ঠিক হয়ে গেছে) :)
জনাথন অ্যালান

1
এটি কি ASCII শিল্প হতে হবে? MoonPhase["Icon"]ম্যাথামেটিকায় 17 বাইট হয়…
কোনও গাছ

পছন্দ করুন ঠিক আছে তবে এটি একটি পার্থক্য করতে পারে: পি
হাইপার নিউট্রিনো

@ ল্যানলক ৪ আপনি এএসসিআইআই শিল্প করার কারণের একটি কারণ আপনি বলেছেন। এছাড়াও হ্যাঁ এটি ASCII শিল্প হতে হবে না।
হাইপারনিউটারিনো

উত্তর:


7

জেলি ,  43 32 বাইট

-7 বাইটগুলি বিট-মাস্ক থেকে তুলনা-মাস্কে
-2 বাইটগুলি কিছু টেবিট প্রোগ্রামিং উন্নতি সহ
-1 বাইট দক্ষিণ গোলার্ধে
-1 বাইটে সরানো - অল-নতুন ɓচেইন বিভাজকটি ব্যবহার করুন ... এটির প্রথমবার ব্যবহার!

“>,##‘m0Dm€0ż@€4Ḷ¤Œṙɓ%4>C¹⁸:4¤?Y

অক্ষর ব্যবহার 0জন্য .এবং 1জন্য #

একটি টেস্ট স্যুটে সমস্ত ক্ষেত্রে অনলাইনে চেষ্টা করে দেখুন!

কিভাবে?

প্রথম চারটি পর্যায় ক্যাপচার করার জন্য একটি মাস্ক তৈরি করে এবং লাইনগুলি উল্টানোর পরিবর্তে মডিউল -4 ফেজের ফলাফলের মানগুলি পরিপূরক করে যখন ফেজ ডিভি -4 অ-শূন্য হয়।

আমি মূলত একটি বিট মাস্ক নির্মিত কিন্তু মাস্ক মান ছিল 0, 8, 12, এবং 14- 0000, 1000, 1100, এবং 1110- এই আছে phaseনেতৃস্থানীয় বেশী - তাই একটি তুলনা-মাস্ক পরিবর্তে ব্যবহার করা যেতে পারে।

“>,##‘m0Dm€0ż@€4Ḷ¤Œṙɓ%4>C¹⁸:4¤?Y - Main link 1: number phase
“>,##‘                           - code-page index literal [62,44,35,35]
      m0                         - reflect -> [62,44,35,35,35,35,44,62]
        D                        - decimalise -> [[6,2],[4,4],[3,5],[3,5],[3,5],[3,5],[4,4],[6,2]]
         m€0                     - reflect €ach -> [[6,2,2,6],[4,4,4,4],[3,5,5,3],[3,5,5,3],[3,5,5,3],[3,5,5,3],[4,4,4,4],[6,2,2,6]]
                 ¤               - nilad and link(s) as a nilad:
               4                 -   literal 4
                Ḷ                -   lowered range -> [0,1,2,3]
            ż@€                  - zip (reverse @rguments) for €ach -> [[[0,6],[1,2],[2,2],[3,6]],[[0,4],[1,4],[2,4],[3,4]],[[0,3],[1,5],[2,5],[3,3]],[[0,3],[1,5],[2,5],[3,3]],[[0,3],[1,5],[2,5],[3,3]],[[0,3],[1,5],[2,5],[3,3]],[[0,4],[1,4],[2,4],[3,4]],[[0,6],[1,2],[2,2],[3,6]]]
                  Œṙ             - run-length decode -> [[0,0,0,0,0,0,1,1,2,2,3,3,3,3,3,3],[0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3],[0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3],[0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3],[0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3],[0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3],[0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3],[0,0,0,0,0,0,1,1,2,2,3,3,3,3,3,3]]
                                    -   i.e.: 0000001122333333  -
                                              0000111122223333  - Marking out the separate
                                              0001111122222333  - regions as filled up by
                                              0001111122222333  - the phases of the moon in
                                              0001111122222333  - the southern hemisphere.
                                              0001111122222333  -
                                              0000111122223333  -
                                              0000001122333333  -
                    ɓ            - dyadic chain separation & swap arguments, call that m
                     %4          - phase mod 4
                       >         - greater than? (vectorises across m) 1 if so 0 if not
                              ?  - if:
                             ¤   -   nilad followed by link(s) as a nilad:
                          ⁸      -     link's left argument, phase
                           :4    -     integer divide by 4
                        C        - then: complement
                         ¹       - else: identity (do nothing)
                               Y - join with newlines
                                 - implicit print

3
এটি কোনও ভাষা নয়, এটি মডেমের আওয়াজ ...
অ্যালনিটাক

@ অ্যালনাইটাক পিপিসিজিতে আপনাকে স্বাগতম! আপনি কি এই পিপিসি.এসইতে যোগদান করেছেন যাতে আপনি এই মন্তব্য করতে পারেন? ;)
হাইপারনিউটারিনো

8

জাভাস্ক্রিপ্ট (ES6), 121 ... 103 92 বাইট

f=(n,i=128)=>i--?f(n,i)+(i%16?'':`
`)+'.#.'[i%16+4*n-~-'31000013'[n&1?i>>4:1]*~-(n&2)>>4]:''

ডেমো


ওহ, আমি লাঞ্চের সময় এটিকে ছুরিকাঘাত দিতে চেয়েছিলাম। সন্দেহ হলেও আমি তোমাকে মারতাম।
শেগি

4

হাস্কেল , 98 90 বাইট

f i=do{a<-[3,1,0,0,0,0,1,3];[".#."!!div(i*4+x+[0,a-1,0,1-a]!!mod i 4)16|x<-[0..15]]++"\n"}

এটি তালিকা মোনাড ( doসারিগুলির জন্য একটি ব্লক এবং কলামগুলির জন্য একটি তালিকা বোঝার) ব্যবহার করে সারি এবং কলামগুলির মধ্য দিয়ে লুপ করে এবং ইনপুট ( i) এর সারণীর জন্য অফসেট মান a, এবং কলাম সূচী ব্যবহার করে প্রতিটি কক্ষের জন্য কোন অক্ষর নির্ধারণ করে? ( x)।

সত্য অফসেটের জন্য স্যুবপ্রেসশনটি সহজ করে 8 বাইট সংরক্ষণ করা হয়েছে।


3

পাইথন 2 , 144 142 127 বাইট

i=input()
a,b='#.'[::i/4*2-1]
i%=4
for x in range(8):y=(int(abs(x-3.5))or 1)+2;y=[y,16-y][i>2];y=[i*4,y][i%2];print(16-y)*a+b*y

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

অবশ্যই আরও গল্ফ করা যেতে পারে, টিপস প্রশংসা করা হয় :)

আন্ডারগ্রাউন্ডোমোরিলে ধন্যবাদ 1 বাইট বন্ধ!

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


if i>2:y=16-yপরিবর্তিত হতে পারে y=[16-y,y][i>2], এটি আরও দীর্ঘ, তবে সেমিকোলনের উদার ব্যবহারের ফলে আপনার লুপটি বেশ কয়েকটি বাইট সংরক্ষণের জন্য ওয়ান-লাইনার হতে পারে।
মেগো 21

2

পিএইচপি, 105 বাইট

for(;$i++<8;)echo($p=str_pad)($p("",[16,16-$b=_64333346[$i],8,$b][3&$a=$argn],_M[$a/4]),16,M_[$a/4])."
";

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


1
কেন না $a/4? সূচকটি কাটিয়াটি করবে। :)
তিতাস

@ টিটাস আমি এটি জানি না। আপনাকে ধন্যবাদ
জার্গ হালসারম্যান

1

গণিত, 125 বাইট

s=Switch;Grid@If[1<#<6,#&,1-#&][s[m=#~Mod~4,0,0,2,1,_,1-{3.4,5}~DiskMatrix~{8,16}]s[m,1,h=Table[Boole[i>8],8,{i,16}],_,1-h]]&

ব্যবহার করে একটি গ্রিড ফেরত পাঠায় 1এবং 0পরিবর্তে .এবং #যথাক্রমে।

এটি দুটি মুখোশ, একটি বৃত্তাকার এক এবং একটি অর্ধ-ছায়াযুক্ত একটি ব্যবহার করে এবং উপযুক্ত আকারগুলি পেতে যৌক্তিকভাবে তাদের একত্রিত করে কাজ করে।

দুটি মুখোশ 1-{3.4,5}~DiskMatrix~{8,16}বৃত্তাকার এক এবং Table[Boole[i>8],8,{i,16}]অর্ধেকের জন্য তৈরি করা হয়। যুক্তিটি নিম্নরূপ:

output = f(a AND b)

where f, a and b are:

n | f    a  b
--+-----------
0 | NOT  F  ◨ 
1 | NOT  ○  ◧ 
2 | 1    T  ◨
3 | 1    ○  ◨
4 | 1    F  ◨ 
5 | 1    ○  ◧ 
6 | NOT  T  ◨ 
7 | NOT  ○  ◨

যুক্তি দিয়ে কৃত্রিম হয় 1s এবং 0জন্য গুণ ব্যবহার করে গুলি ANDএবং x -> 1-xজন্য NOT

28 বাইটের জন্য একটি বোনাস (নন-এএসসিআইআই) সমাধান: IconData["MoonPhase",#/4-1]&

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