Нотвен хочет изучить кинематику тел, сброшенных с больших высот в однородном гравитационном поле, но, к сожалению, у него нет технической возможности подняться на достаточно высокие места и наблюдать за объектами при падении. Но кто не хочет видеть достижения в науке, так что ... Давайте поможем Нотвену построить симулятор гравитации!
Физический фон
Объект упал с высоты ( без начальной скорости ) в однородном гравитационном поле, пренебрегая атмосферными эффектами, такими как сопротивление или ветер, набирает скорость и со временем ускоряется к земле. Эта «скорость изменения» скорости в единицу времени называется гравитационным ускорением . У поверхности Земли оно приблизительно равно , но для этой задачи мы будем использовать значение Это означает, что за одну секунду объект увеличивает свою скорость примерно на . Подумайте о том, чтобы иметь высоту , кратную и представьте, что эта высота делится на равные интервалы, каждый из которых равенметров Notwen хочет измерить, сколько времени требуется объекту, чтобы пройти через каждый из этих интервалов, так что это то, что мы стремимся также вычислить. Современная кинематика - пропуская технические - говорит нам, что:
где для всех значений в нашем случае, является начальным скорость в начале нашего интервала а - продолжительность интервала времени (для справки, индексирование начинается с с ). Мы также знаем, что имеет следующее выражение:
Соревнование
Входные данные: высота с которой объект выбрасывается как: положительное целое число, кратное , или числу интервалов (так что или означают, что ) - какой зависит от вас.
Вывод: художественная анимация ASCII падающего объекта, сброшенного с высоты (подробности ниже).
Структура выходного кадра должна быть следующей:
- символов новой строки, предшествующих «основанию», представленных как минимум одним непробельным символом (например,
@
). По крайней мере, один из символов земли должен лежать на вертикали, на которую падает объект. - Другой непробельный символ, представляющий объект (например
X
), отличный от того, который вы выбрали для земли. - По желанию , символ в начале каждой строки, представляющий вертикальную ось или стену, состоит из строк. Подойдет любое количество начальных и конечных пространств, если они согласованы между кадрами, а также любое количество промежутков между стеной и объектом. Примеры допустимых кадров включают 1 (для или ):
| X > | @ > A | > | or or or > | O > | > | > @@@ ^ ----- &&&
Объект должен начинаться с первой строки первого кадра, затем через с выход должен быть очищен, и ваша программа должна отобразить объект на той же вертикали, но на следующей строке во втором кадре; затем через с выходной сигнал должен быть снова и ваша программа должна отобразить объект на той же вертикали, но на следующей строке в третьем кадре и т. д., пока объект не достигнет линии прямо над землей. Пример:
правила
- Выводом должен быть некоторый текст, записанный на интерактивной (сбрасываемой) консоли, GIF, отдельный файл для каждого кадра или какой-либо другой разумный способ вывода.
- Каждый кадр должен полностью перезаписать последний кадр и находиться в том же месте.
- Вы можете предположить, что время, необходимое компилятору / интерпретатору для вывода текста, ничтожно мало, а минимальная точность, разрешенная для вычисления квадратных корней, составляет 2 десятичных знака.
- Вы можете получить ввод и предоставить вывод любым стандартным методом , при этом отметив, что эти лазейки по умолчанию запрещены. ЭтоКод-гольфтак что попробуйте выполнить задачу за наименьшее количество байтов, которыми вы можете управлять на выбранном вами языке .
1: Я снисходительно отношусь к тому, что составляет действительный фрейм, потому что я хочу разрешить все, что подходит вашему решению лучше всего, и я не пытаюсь добавить лишние вещи к вызову. Если что-то неясно, спрашивайте в комментариях.
chr(27)
?'\33'
все равно должно быть короче.2*5**.5
есть20**.5
.C # (.NET Core) ,
201, 180 + 13 = 193 байтаНеобходимо использовать Систему; для 13 дополнительных байтов.
Как ни странно, Console.Clear (), кажется, не работает для меня на TIO. Тем не менее, это прекрасно работает в консольном приложении под VS2017.
РЕДАКТИРОВАТЬ: Благодаря Embodiment of Ignorance за сокращение цикла, указание на мои ненужные переменные назначают и ненужные с помощью System.Threading; заявление (остаток от копирования VS), и указав, что земля была обязательна! Всего 8 байтов до сих пор играли в гольф с добавлением земли. Тай Тай!
Попробуйте онлайн!
источник