PHP (> = 5,4), 199 197 byte
(-2 byte bằng cách chơi gôn nhiều hơn)
<?$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],'_',' ');
Để chạy nó:
php -d error_reporting=0 -d short_open_tag=1 <filename> <image_path>
Thí dụ:
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
Ghi chú:
- Các
-d error_reporting=0
tùy chọn được sử dụng để không ra thông báo / cảnh báo.
- Các
-d short_open_tag=1
yêu cầu để cho phép thẻ ngắn.
- Nếu bạn đang sử dụng một
https
URL như ví dụ trên, OpenSSL cũng sẽ được bật.
Làm sao?
Lấy kích thước tệp (byte) và tạo một số duy nhất cho nó theo công thức này:
((<first_bytes_digit> + <fourth_bytes_digit>) % 11) - 2
Công thức này tạo ra các số từ 0 đến 8 chỉ thiếu 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 │
└─────────────────┴───────┴─────────┴─────┴────────────────────────┘
Cách tiếp cận trước đây:
PHP (> = 5,4), 251 byte
<?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];
Để chạy nó:
php -d error_reporting=0 -d short_open_tag=1 <filename> <image_path>
Thí dụ:
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
Ghi chú:
- Các
-d error_reporting=0
tùy chọn được sử dụng để không ra thông báo / cảnh báo.
- Các
-d short_open_tag=1
yêu cầu để cho phép thẻ ngắn.
- PHP phải có GD và nó phải được kích hoạt.
- Nếu bạn đang sử dụng một
https
URL như ví dụ trên, OpenSSL cũng sẽ được bật.
Làm sao?
Kiểm tra cho màu sắc của 4 điểm ảnh trong hình ảnh ở 40,120
, 80,120
, 160,120
và 200,120
và quyết định về giai đoạn mặt trăng từ những màu sắc.