मुझे चंद्र चरण बताओ!


10

चुनौती

इनपुट के रूप में चंद्रमा की एक छवि को देखते हुए, चंद्रमा के चरण का उत्पादन करता है।

चन्द्रमा की कलाएँ

आपका प्रोग्राम इन छवियों में से एक png प्रारूप में प्रदान किया जाएगा और आपको दिए गए चरण को ठीक उसी प्रकार आउटपुट करना होगा:

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 px png फ़ाइल द्वारा 240 px का पथ होगा और ऊपर दी गई छवियों में से एक होगा।

छवि बाइट्स समान होने की गारंटी है।

जीतना

सबसे छोटा कोड जीतता है


1
एक बोनस के रूप में, इस शांत gif को देखें: upload.wikimedia.org/wikipedia/commons/b/ba/…
Beta Decay

जवाबों:


9

नोड.जेएस , 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))- RGBA पिक्सेल x,y
getpixel((n*48,99))[2]for n in[1,2,3,4]को वापस लौटाएगा - मध्य रेखा का नीला चैनल लौटाएगा, जहां n*48 ... for n in 1,2,3,44 बिंदु होंगे जहां सूर्य का प्रकाश कवर हो सकता है
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]}

बाइट बल द्वारा पाया जाने वाला बाइट ऑफ़सेट - उदाहरण के लिए, फ़ाइल modulo 7 की 699 वीं बाइट लेना, पहले लुकअप टेबल में एक इंडेक्स देता है।



1

PHP (> = 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 का उपयोग कर रहे हैं , तो OpenSSL भी सक्षम होना चाहिए।

कैसे?

फ़ाइल आकार (बाइट्स) प्राप्त करता है और इस सूत्र द्वारा इसके लिए एक अद्वितीय संख्या बनाता है:

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

यह सूत्र 0 से 8 तक की संख्या को केवल 3 लापता बनाता है।

┌─────────────────┬───────┬─────────┬─────┬────────────────────────┐
│      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 │
└─────────────────┴───────┴─────────┴─────┴────────────────────────┘

पिछले दृष्टिकोण:

PHP (> = 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छोटे टैग अनुमति देने के लिए आवश्यक है।
  • PHP में GD होना चाहिए और यह सक्षम होना चाहिए।
  • यदि आप httpsऊपर दिए गए उदाहरण जैसे URL का उपयोग कर रहे हैं , तो OpenSSL भी सक्षम होना चाहिए।

कैसे?

पर छवि में 4 पिक्सल के रंग के लिए चेक 40,120, 80,120, 160,120और 200,120और उन रंगों से चंद्रमा चरण पर फैसला करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.