Наша ближайшая звезда, Солнце, довольно беспокойная. Время подъема и установки зависит от того, где вы находитесь, и от того, зима это или нет.
Мы хотели бы иметь возможность сделать вывод, что солнце светит снаружи, не покидая удобства наших подвалов - вот почему нам нужна современная карта солнца (карта дневного света). Вы тот, кто пишет программу, которая генерирует именно это!
Правила: Ваша программа должна выводить изображение (в известном формате) или ASCII-изображение нашей планеты, показывающее (приблизительное значение), какие части в настоящее время освещены солнцем. Ваша программа должна быть оригинальной и автономной : вам не разрешено копировать, использовать, включать или вызывать любой код, кроме стандартных библиотек вашего языка программирования.
Если вы до сих пор не знаете, о чем я говорю, вот пример из Википедии:
Это конкурс популярности . Вы должны отметить в своем ответе, какое из следующих действий вы пытаетесь достичь (возможны несколько вариантов):
Корректность. Обратите внимание, что правила гласят «приближение» - чем лучше ваше приближение, тем больше очков в этой категории. Вы можете проверить свою реализацию по Wolfram Alpha , Time and Date или die.net .
Функциональность. Например, как насчет интерактивности? Маркировка конкретных мест? Картирование других планет?
Эстетика. Рисование континентов? Бонусные очки. Текстурированные континенты? Бонусные очки. На 3D земле? С облаками? Звезды? Правильные звезды? Массивные бонусные баллы. И так далее.
Использование необычных, старых или просто неправильных технологий. Конечно, вы можете записать это в Mathematica, но вы рассматривали возможность использования
m4
? SQL? Forth? сборка х86?Веселье. Хотите использовать проекционную карту Dymaxion ? Преуспевать!
Короткий код. В конце концов, это Code Golf SE.
Веселиться!
источник
m4
любой день недели для этой задачи ...Ответы:
Haskell - код низкого качества
Я очень устала, когда написала это.
Я мог бы зайти слишком далеко с идеей проекций, вот проекция, которую использует программа. В основном, как проецирование земли на куб, а затем его разворачивание. Кроме того, в этой проекции тень состоит из прямых линий.
Программа использует текущую дату / время и выводит файл PPM на стандартный вывод.
Это верно - треугольный
where
код, вложенныеcase
s, недопустимое использование ввода-вывода.источник
fromIntegral (fromEnum $ utctDayTime c)
аккуратнее(realToFrac $ utctDayTime c)
. (Я узнал об этом только во время написания своего ответа)Haskell, в категории «потому что это там»
Мне было любопытно, поэтому я написал один. Формулы достаточно точны [1], но затем я использую некоторую графику ascii вместо правильной карты Plate Carrée, потому что она выглядела лучше (способ, которым я конвертирую пиксели в широту / долготу, работает только для Plate Carrée)
Пример выходных данных из более интересного времени года (мы приближаемся к равноденствию, поэтому прямоугольные пятна Уандера Наута довольно точны :)) - это для 16 января 13:55:51 UTC 2014:
[1] они такие же, как вы найдете в других местах, за исключением того, что без дополнительной работы нужно поддерживать градусы от 0 до 360, часы от 0 до 24 и радианы от 0 до 2pi. Я думаю, что это пережитки тех дней, когда мы использовали правила слайдов; триггерные функции прекрасно работают вне этих диапазонов ...
источник
,
Баш, 882 * символов
Это моя вторая запись, на этот раз в категориях Aesthetics , Weird tech , Fun и Short code . Это вдохновлено вступлением Рэма Нарасимхана и комментарием Питера Тейлора.
Сценарий сначала генерирует текстуру мира с низким разрешением, связанную как данные в кодировке base64. Затем он генерирует 24 PovRay-сцены, содержащие сферу с этой текстурой, каждая из которых повернута «лицом к солнцу». Наконец, кадры объединяются в GIF-анимацию с использованием ImageMagick. Это означает, что для работы скрипта должны быть установлены как PovRay, так и ImageMagick - не стесняйтесь игнорировать эту запись, если считаете, что это должно ее дисквалифицировать.
Как и запись Рама, и моя первая запись, это не учитывает сезонные изменения, что означает, что это не очень точно. Это, однако, короче, красивее и точнее, чем моя первая запись - и в отличие от записи Рама, в нее включены данные карты и код для создания анимации GIF.
В качестве бонуса , вот GIF, который использует изображение синего мрамора НАСА вместо 1-битной текстуры, которая экономит место, т.е. как бы выглядел результат без каких-либо ограничений по размеру: http://i.imgur.com/AnahEIu.gif
*: 882 символа, не считая декоративных пробелов, всего 1872 символа.
источник
Я решил начать конкурс с моей собственной записи в категории коротких кодов . Длина 923 символа, не считая перевода строки.
C: 923 символа
Вот код:
Вот как это работает:
Вот пример выходных данных, преобразованных в PNG ( увеличенная версия ):
*: Весь мир, кроме Антарктиды, но кто там живет?
источник
Хаскелл - это время Хаммера.
Я сделал еще один. Адаптированный из моей предыдущей версии, этот использует наклонную проекцию Хаммера, чтобы показать оба полюса одновременно (фактически вы видите всю землю в каждом кадре). Просто для большей странности, вместо того, чтобы использовать растровое изображение напрямую, я выбрал землю вдоль спирали, чтобы получить примерно равный охват области; это то, что позволяет мне легко искажать землю и вращать ее. Проекция Хаммера тоже равна площади; моя идея заключалась в том, что соединение этих двух вещей приведет к меньшему искажению, когда я заполню пробелы. Я отображаю сетку на проекции тоже, используя алгоритм Брезенхэма для рисования линий. Глобус и линия терминатора движутся в течение дня.
Отредактировано, чтобы изменить изображение на более высокое разрешение, но (намеренно) более грубое базовое растровое изображение, чтобы вы могли увидеть эффект спирали. Это использует 5000 точек (выборка из ~ 260000 ), что эквивалентно растровому изображению 50x100, но дает большее разрешение экватору, чем полюсам.
Чтобы использовать код, скомпилируйте с ghc, запустите с необязательным числовым параметром, который является часовым смещением; файлы генерируются как «earth0.pgm», «earth1.pgm».
источник
C, используя PNM изображения
Поздний ответ, ориентируясь на правильность и эстетику . Вывод представляет собой смесь двух входных изображений (day.pnm и night.pnm), включая полосу сумерек. Я использую изображения на основе голубого мрамора НАСА здесь.
Код использует мой собственный img.h для ясности (просто представьте, что он дословно включен в .c для строгого соответствия правилам ...). Все там реализовано с помощью макросов Си. Анимации построены с помощью imagemagicks, конвертированных из нескольких кадров - сама программа будет выводить только статические изображения. Код ниже.
Сейчас: (13 августа, ~ 13:00 CEST)
Один день: (1 января)
Один год: (12:00 UTC)
sun.c
img.h
источник
R: Использование ggplot2 и Map projection
Вдохновленный постом @ mniip, я решил попробовать использовать пакет R mapproj, в котором мы можем ориентировать глобус, указав, где должен быть Северный полюс при вычислении проекции.
Основываясь на текущем времени по Гринвичу, я вычисляю долготу, где сейчас полдень, и делаю эту точку центром карты. Мы смотрим на Землю с "точки зрения Солнца", поэтому все, что видно, находится при дневном свете.
Большая часть кода просто эстетика. Единственной частью, которую я должен был выяснить, было вычисление «долготы полудня», то есть значения долготы, в котором это было полдень в любое время по Гринвичу.
Затем я использовал пакет R-анимации, чтобы сгенерировать 24 изображения и соединить их в один GIF.
источник
JavaScript - Мартин Клеппе ( http://aem1k.com/ )
Хочу подчеркнуть, что это не моя работа, а работа Мартина Клеппе. Я просто думаю, что он подходит так идеально, что его не должно быть здесь:
Демо онлайн (или просто вставьте его в консоль)
источник