Ваша работа довольно проста, написать программу, которая печатает Hello, world!
, что при скручивании создает программу, которая печатает Twister!
.
Как скручиваются струны
Алгоритм скручивания очень прост. Каждый столбец смещен вниз на свой индекс (столбец 0 перемещается вниз на 0, столбец 1 перемещается на 1, ...). Сдвиг столбца переносится наверх. Это выглядит примерно так:
a
ba
cba
----
cba
cb
c
Со всем под линией обертывания наверх. Реальный пример:
Original:
\\\\\\\\\\\\
............
............
............
Twisted:
\...\...\...
.\...\...\..
..\...\...\.
...\...\...\
(Дополнительные примеры и твистеры на вашем любимом языке здесь )
счет
Ваша программа должна быть прямоугольником с отступами. Это код-гольф, поэтому выигрывает меньшее количество байтов!
правила
- Ваша первая программа должна распечатать
Hello, world!
. Разрешен только один завершающий перевод строки. - Ваша первая и вторая программы должны быть на одном языке.
- Ваша вторая программа должна распечатать
Twister!
. Разрешен только один завершающий перевод строки. - Ваша программа должна иметь как минимум 2 строки и 2 столбца.
½
и получает квадратный корень из числа. Какой из двух должен рассматриваться как новая линия для этого вызова?Ответы:
Желе ,
333129 байторигинал
Попробуйте онлайн.
скрученный
Попробуйте онлайн!
Как это работает
В каждой программе каждая строка определяет ссылку. Последняя ссылка является основной и выполняется при запуске программы. Поскольку ссылки на первую ссылку отсутствуют, она просто игнорируется.
Для обеих программ
“ɗ⁻%OḶ$“¡¦ḟṠ»
выдает список['Hello, world!', 'Twister!']
, используя статическое сжатие словаря Jelly .Единственная разница между оригинальным и витым кодом - это последний символ главной ссылки.
Ḣ
выбирает первую строку списка иṪ
выбирает последнюю.источник
Python 2, 59 байт
Витая:
По сути, помещает
Twister!
данные в нечетные индексы строки, а затем переходит от удаления первых двух символов (отступов) к удалению всех остальных символов.источник
print " Hello, world!" [2::]
Деление ,
215162565350 байтВот начало:
Попробуйте онлайн!
Когда скручено:
Попробуйте онлайн!
объяснение
Hello, world!
Код довольно прост:D
порождает один атом, идущий вниз.\
(зеркала) отклоняют это на второй столбец."Hello, world!"
печатает необходимую строку1
это портал. Он телепортирует атом к следующему1
в порядке чтения, сохраняя свое направление (это то, что рядом сr
).;
который разрушает атом и завершает программу.Поток управления для
Twister!
кода немного больше ... витой ...D
порождает атом.\
отклоняет его вправо, в1
.1
. Атом попадает в атом,o
который просто меняет свою массу, но мы можем это игнорировать. Код оборачивается так, что атом1
снова попадает в то же самое , пропуская две строки. Опять же, мы можем игнорироватьl
, атом оборачивается и1
снова попадает в . Теперь1
в коде больше нет ничего, поэтому атом переходит обратно к1
вершине.\
, теперь снова опускаясь."Twister!"
печатает необходимый код1
телепортирует атом еще раз, после первого;
, но есть другой,;
ожидающий его завершения программы.источник
Деление , 35 байт
Подход деления № 3 (№ 4, считая тот, который я отредактировал из моего первого поста).
Попробуйте онлайн!
Попробуйте онлайн!
объяснение
Это на самом деле самое простое из решений деления. В обеих программах есть две точки входа:
R
создает правый атом иL
левый атом. В любом случае,;
уничтожает один из них немедленно.Теперь в
Hello, world!
программе атом сначала печатает половину строки"Hello, "
, затем\
и/
(которые являются зеркалами) отклоняют атом на вторую строку, идущую влево."world!"
(читать в направлении движущегося атома) печатает остаток строки.L
теперь не работает и также;
уничтожает этот атом, завершая программу.Twister!
Программа является по существу такой же , но с поворотом на 180 градусов. На этот разL
атом выживает и начинает печатать с"Twist"
.\
И/
снова отклоняют его на другую линию, теперь ладится."er!
печатает остаток строки,R
не работает и;
завершает программу.источник
Деление, 53
Попробуйте онлайн!
и крутил:
Попробуйте онлайн!
источник
Japt
676157 байтСохранено 6 байтов благодаря @JAtkin, 4 байта благодаря @Ian
Витая:
Проверьте это онлайн: оригинал , витая
Как это работает
источник
Twister!
замены пробелов на.
."T.w.i.s.t.e.r.!. . . . . "k".(newline)"H.e.l.l.o.,. .w.o.r.l.d.!"k".
Python, 398
414 380 456байт *Удалось обновить, чтобы оно соответствовало правилам, но я все еще не решаюсь назвать это конкурентоспособным. Поскольку для его запуска необходимы закомментированные строки, я включил их в число байтов
Это решение не следует правилам, так как оно выводит сообщения об ошибках в дополнение к разрешенному выводу.Я просто хотел посмотреть, можно ли это сделать на python. Может, но это не красиво.
Когда скрученный становится
источник
rint '
в каждой строке.C (gcc) , 87 байт
раскручивается
Попробуйте онлайн!
скрученный
Попробуйте онлайн!
источник
Brainfuck,
467367285 байтраскручивается
Попробуйте онлайн!
скрученный
Попробуйте онлайн!
источник