Мануфактура: створити найповільнішу можливу програму прийняття


18

Напишіть програму Manufactoria, яка прийме порожню стрічку введення. Але не роби це швидко! Я маю на увазі, пишіть програму швидко, але не дозволяйте їй швидко працювати. Чим повільніше програма, тим краще, доки вона з часом припиняється. Приклад програми нижче займає 3:51 ("загальний час", повідомлений тренажером).

введіть тут опис зображення

http://pleasingfungus.com/Manufactoria/?lvl=36&code=g12whatf3;r9:8f1;p12:9f3;c13:9f0;r11:9f0;r10:9f0;r9:9f1;b11:8f0;b10:8f1 ; r9: 7f2; c10: 7f2; c11: 7f2; c12: 7f3; q12: 8f3; y13: 8f2; y14: 8f2; y15: 8f1; y15: 7f0; y14: 7f0; y13: 7f0; g12: 6f3; & ctm = Slow_Accepter!; Створити_the_slowest_possible_accepting_machine;:; 7; 3; 0 ;

Ваша програма починається з порожньої стрічки. Він повинен трохи обернутися, але з часом досягти площі виходу. За бажанням ви можете залишити дані на стрічці. Виграє найповільніша програма на дошці 7x7 Manufactoria!

Права клавіша зі стрілкою - ваш друг, вона прискорює тренажер.

Бонусні бали за збій тренажера!


Тож немає ніяких вимог щодо прийому / відхилення вводу, окрім порожньої стрічки?
Нестабільність

@ Нестабільність: правильно.
Кіт Рендалл

Прикро, тренажер не повідомляє про час роботи, якщо стрічка не буде порожньою в кінці, оскільки вона не відповідає очікуваному результату виклику. (На щастя, мені було легко стерти стрічку в кінці, не потребуючи зайвого місця.)
хлібниця

Відповіді:


22

~ 10 23 ітерацій ~ 10 15 ітерацій ~ 10 8 ітерацій

Налаштування мануфактури

http://pleasingfungus.com/Manufactoria/?lvl=32&code=g9:7f2;b12:8f2;p13:8f5;p11:8f3;r14:8f0;q11:10f3;q13:7f1;y13:9f1 ;r10:10f1 ; c12: 9f2; c9: 9f2; i11: 9f7; i10: 9f4; c9: 8f3; i10: 8f2; c14: 9f0; c15: 9f0; c15: 8f3; c15: 7f3; c14: 7f2; g12: 7f0; c11 : 7f3; c10: 7f2; q9: 6f7; r10: 6f1; r9: 5f3; c11: 6f0; r10: 5f2; r11: 5f1; r9: 4f3; r10: 4f0; r11: 4f0; y12: 5f2; y13: 5f2 ; y14: 5f3; y14: 6f0; y13: 6f0; y12: 6f0; & ctm = Slow_Accepter!; Створити_the_slowest_possible_accepting_machine;:; 7; 3; 0 ;

Машина - це одометр, що працює в базовій трійці, використовуючи червоний, синій та жовтий символи для позначення цифр 0, 1 та 2 відповідно. Зелений символ використовується для позначення кінця числа. На початку стрічка ініціалізується з 49 червоними символами. Це робиться деталями у трьох верхніх рядах машини. Нижні чотири ряди вирішують завдання збільшення числа в циклі. На кожній ітерації дві гілки ліворуч визначають, як застосувати приріст до поточного числа, а потім клітинки гілки праворуч копіюють залишилися, не зачеплені цифри.

Раніше я намагався оцінити час роботи машини, чи було дозволено її запускати до завершення, але на цьому рівні має сенс просто пройти кількість ітерацій. Грубо кажучи, на повну одну ітерацію потрібно близько хвилини, але навіть якщо це знадобиться секунди, це лише скоротить час роботи на один порядок.


4
Гаразд, я здаюсь ..
Нестабільність

2
Не здавайся! Я не сумніваюся, що це все ще просто дряпає поверхню. Наприклад, ущільнення логіки одометра лише однією або двома осередками дозволило б збільшити час роботи на порядок.
хлібниця


5
Якщо це допомагає, я часто надсилав відповіді на гольф, які відставали від лідера, тільки тому, що це був інший підхід. Одне з речей, що мені подобається на цьому веб-сайті, - це те, що він зберігає різноманітність відповідей.
хлібниця

1
@SimplyBeautifulArt Можна було б покращитись, якщо пара символів буде цифрами (у такому випадку ви можете використовувати 15 з 16, а не 3 з 4). Звичайно, у вас виникнуть великі труднощі з малим розміром дошки, намагаючись це реалізувати.
feersum

8

603: 25

Інтернет-тест

Сьогодні я перечитував питання Manufactoria, і раптом з'явилася ідея, яка різко уповільнить процес: замість того, щоб мати 50 значень і змінити кольори 3 рази, нова програма робить це, але потім після цього вона зменшує кількість значень на 1, і знову проходить через зміну кольору, поки не з’явиться порожня стрічка, під час якої програма зупиняється.

Черга не буде зберігати більше 50 значень одночасно, тому немає жодної користі, намагаючись натиснути на стрічку занадто багато значень - вони просто відсуваються відразу. Як і раніше, конвеєрні стрічки мають на меті максимально збільшити час, необхідний для запуску речі. Насправді, було досягнуто мінімальних змін, щоб досягти величезного збільшення часу виконання.

Все ще ніде немає відповіді хлібопечки.


Цікаво, наскільки подібні наші рішення. Ми обидва розпочали з множника 9x6, і ми поставили гілку та групу x6 в одне місце! Ваш, однак, більш елегантний - ви використовували кожну клітинку і закінчували чистою стрічкою.
Ігбі Ларгеман

5

33:33

Над цим працювали досить довго ( Нестабільність встановила планку досить високою), але, як тільки я вдарила 33:33, я подумала, що прийшов час акуратно зупинитися.

Стратегія досить тупа: в основному заповнюйте стрічку одним кольором, потім іншим, потім іншим, і завжди намагайтеся пройти якомога більше комірок між кожним записом (або групою записів).

Я впевнений, що існують шляхи пошуку того, що ми можемо піти набагато далі.

Зайнятий бобр

Рівень посилання


+1 Я побачу, що я можу зробити, щоб його перемогти;) (хоча я, мабуть, не заїду занадто далеко)
Нестабільність
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.