বলুন চান্দ্র ফেজ!


10

চ্যালেঞ্জ

ইনপুট হিসাবে চাঁদের একটি চিত্র দেওয়া হয়েছে, চাঁদের ফেজ আউটপুট।

চাঁদের পর্যায়ক্রমে

আপনার প্রোগ্রামটি পিএনজি ফর্ম্যাটে এই চিত্রগুলির মধ্যে একটি সরবরাহ করা হবে এবং আপনাকে অবশ্যই প্রদত্ত পর্যায়ে আউটপুট দিতে হবে:

new moon

hexdump

waxing crescent

hexdump

first quarter

hexdump

waxing gibbous

hexdump

full moon

hexdump

waning gibbous

hexdump

third quarter

hexdump

waning crescent

hexdump

ইনপুট

ইনপুটটি 240 পিএক্স বাই 240 পিএক্স png ফাইলের পথ হবে এবং উপরের চিত্রগুলির মধ্যে একটি হবে।

ইমেজ বাইটগুলি একই হওয়ার নিশ্চয়তা রয়েছে।

জয়লাভ

সংক্ষিপ্ততম কোড জিতেছে


1
বোনাস হিসাবে, এই দুর্দান্ত জিআইএফটি দেখুন
বি

উত্তর:


9

Node.js , 145 বাইট

p=>'third/waning/first/full/waxing/new'.split`/`[(s=require('fs').statSync(p).size)%418%6]+' '+'quarter/crescent/gibbous/moon'.split`/`[s%12%9%4]

এটি অনলাইন চেষ্টা করুন! (একই আকারের সাথে ডামি ফাইল উত্পন্ন করে)

কিভাবে?

আমরা কেবল ফাইলের আকারটি দেখি এবং দুটি লক সারণিতে সূচিতে রূপান্তর করি।

প্রথম পর্ব:

 phase | file size | mod 418 | mod 6 | mapped to
-------+-----------+---------+-------+-----------
   0   |    3451   |    107  |    5  | new
   1   |    6430   |    160  |    4  | waxing
   2   |    5144   |    128  |    2  | first
   3   |    7070   |    382  |    4  | waxing
   4   |    5283   |    267  |    3  | full
   5   |    7067   |    379  |    1  | waning
   6   |    4976   |    378  |    0  | third
   7   |    6337   |     67  |    1  | waning

দ্বিতীয় অংশ:

 phase | file size | mod 12 |  mod 9 |  mod 4 | mapped to
-------+-----------+--------+--------+--------+-----------
   0   |    3451   |     7  |     7  |    3   | moon
   1   |    6430   |    10  |     1  |    1   | crescent
   2   |    5144   |     8  |     8  |    0   | quarter
   3   |    7070   |     2  |     2  |    2   | gibbous
   4   |    5283   |     3  |     3  |    3   | moon
   5   |    7067   |    11  |     2  |    2   | gibbous
   6   |    4976   |     8  |     8  |    0   | quarter
   7   |    6337   |     1  |     1  |    1   | crescent

7

পাইথন 2 , 223 222 বাইট

-1 বাইট ওএমকে ধন্যবাদ

lambda p:'new moonzzfull moonzzfirst quarterzzwaxing crescentzzwaning gibbouszzwaxing gibbouszthird quarterzwaning crescent'.split('z')[sum(n*Image.open(p).getpixel((n*48,99))[2]for n in[1,2,3,4])%13]
from PIL import Image

getpixel((x,y))- আরজিবিএ পিক্সেলটি এখানে x,y
getpixel((n*48,99))[2]for n in[1,2,3,4]ফিরিয়ে দেবে - মাঝের লাইনের নীল চ্যানেলটি ফিরিয়ে দেবে, যেখানে n*48 ... for n in 1,2,3,4চারটি পয়েন্ট থাকবে যেখানে সূর্যের আলো coverাকাতে পারে
n*getpixel(...)- প্রতিটি কলামের জন্য একটি পৃথক মান উত্পন্ন করবে
sum(...)%13- এই মানগুলি একসাথে যুক্ত করা হয় এবং %13একটি অনন্য পেতে ব্যবহৃত হয় প্রতিটি পর্বের মান, যা পর্ব তালিকার সূচী হিসাবে ব্যবহৃত হবে
পিক্সেলগুলি প্রায় লাল বৃত্তের অভ্যন্তরে:
পিক্সেল সহ চাঁদের ছবি হাইলাইট করা


5

রুবি, 131 বাইট

->f{f=open(f,'rb').read;%w[first third waxing new full waning][f[699].ord%7]+' '+%w[x moon gibbous quarter crescent][f[998].ord%5]}

ব্রুট ফোর্সের দ্বারা বাইট অফসেটগুলি পাওয়া যায় - উদাহরণস্বরূপ, মডিউল 7 ফাইলটির 699 তম বাইট গ্রহণ করা, প্রথম অনুসন্ধান সারণিতে একটি সূচক দেয়।



1

পিএইচপি (> = 5.4), 199 197 বাইট

(আরও গল্ফ করে বাই -2)

<?$s=strlen(file_get_contents($argv[1])).'';echo strtr([waning_crescent,waning_gibbous,new_moon,0,waxing_crescent,waxing_gibbous,full_moon,first_quarter,third_quarter][($s[0]+$s[3])%11-2],'_',' ');

এটি চালানোর জন্য:

php -d error_reporting=0 -d short_open_tag=1 <filename> <image_path>

উদাহরণ:

php -d error_reporting=0 -d short_open_tag=1 lunar_phase.php https://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Moon_phase_6.svg/240px-Moon_phase_6.svg.png

মন্তব্য:

  • -d error_reporting=0বিকল্প নয় আউটপুট নোটিশ / সতর্কবার্তা করতে ব্যবহৃত হয়।
  • -d short_open_tag=1সংক্ষিপ্ত ট্যাগ করার জন্য প্রয়োজন হয়।
  • আপনি যদি httpsউপরের উদাহরণের মতো URL ব্যবহার করেন তবে ওপেনএসএসএলও সক্ষম করা উচিত।

কিভাবে?

ফাইলের আকার (বাইট) পান এবং এই সূত্রটি দ্বারা এটির জন্য একটি অনন্য নম্বর তৈরি করে:

((<first_bytes_digit> + <fourth_bytes_digit>) % 11) - 2

এই সূত্রটি কেবলমাত্র 3 টি হারিয়ে যাওয়ার সাথে 0 থেকে 8 পর্যন্ত সংখ্যা উত্পন্ন করে।

┌─────────────────┬───────┬─────────┬─────┬────────────────────────┐
│      Phase      │ Bytes │ 1st+4th │ %11 │ -2 (position in array) │
├─────────────────┼───────┼─────────┼─────┼────────────────────────┤
│ new moon        │  3451 │ 3+1=4   │   4 │                      2 │
│ waxing crescent │  6430 │ 6+0=6   │   6 │                      4 │
│ first quarter   │  5144 │ 5+4=9   │   9 │                      7 │
│ waxing gibbous  │  7070 │ 7+0=7   │   7 │                      5 │
│ full moon       │  5283 │ 5+3=8   │   8 │                      6 │
│ waning gibbous  │  7067 │ 7+7=14  │   3 │                      1 │
│ third quarter   │  4976 │ 4+6=10  │  10 │                      8 │
│ waning crescent │  6337 │ 6+7=13  │   2 │                      0 │
└─────────────────┴───────┴─────────┴─────┴────────────────────────┘

পূর্ববর্তী পদ্ধতি:

পিএইচপি (> = 5.4), 251 বাইট

<?foreach([4,8,16,20]as$w){$a+=imagecolorat(imagecreatefrompng($argv[1]),$w*10,120)>1e7;$a&&$w<5?$b=-2:0;}$x=explode('_','full moon_waning gibbous_third quarter_waning crescent_new moon_waxing crescent_first quarter_waxing gibbous');echo$x[$a*++$b+4];

এটি চালানোর জন্য:

php -d error_reporting=0 -d short_open_tag=1 <filename> <image_path>

উদাহরণ:

php -d error_reporting=0 -d short_open_tag=1 lunar_phase.php https://upload.wikimedia.org/wikipedia/commons/thumb/c/c9/Moon_phase_6.svg/240px-Moon_phase_6.svg.png

মন্তব্য:

  • -d error_reporting=0বিকল্প নয় আউটপুট নোটিশ / সতর্কবার্তা করতে ব্যবহৃত হয়।
  • -d short_open_tag=1সংক্ষিপ্ত ট্যাগ করার জন্য প্রয়োজন হয়।
  • পিএইচপিকে অবশ্যই জিডি থাকতে হবে এবং এটি সক্ষম করা উচিত।
  • আপনি যদি httpsউপরের উদাহরণের মতো URL ব্যবহার করেন তবে ওপেনএসএসএলও সক্ষম করা উচিত।

কিভাবে?

এ ছবিতে 4 পিক্সেল রঙের জন্য চেক 40,120, 80,120, 160,120এবং 200,120সেই রং থেকে চাঁদ ফেজ উপর সিদ্ধান্ত নেয়।

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