Швидко ділимося в Мануфактурі


10

Фон

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

Мова дуже легко зрозуміти, тому найшвидший спосіб її засвоїти - це грати перші кілька рівнів гри (пов'язані вище).

Виклик

Ваше завдання - створити програму, яка може розділити одне число на інше за найменший проміжок часу.

Вхід до програми буде рядком X синіх маркерів з наступним Y-червоним маркером. Необхідним результатом буде рядок червоних маркерів довжиною X / Y.

Гра, яка буде використовуватися, знаходиться на цьому офіційному рівні змагань:

http://pleasingfungus.com/Manufactoria/?ctm=Divide_and_Conquer;Input_will_be_X_blues_followed_by_Y_reds,_output_X/Y_reds;bbbbbbrr:rrr|bbbrrr:r|bbbbr:rrrr|r:|bbbbbbbbbbbbrrrr:rrr|bbbbbbbbbbbbrrr:rrrr|bbbbbbbbbrrr:rrr|bbbbbbbbbbrr: rrrrr; 13; 3; 0

Він розміром 13x13 (максимальний розмір) і попередньо обладнаний правильними тестами (див. Розділ підрахунку балів).

Оцінка балів

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

Під час виконання тестів вам, швидше за все, доведеться використовувати повзунок 50-кратного прискорення внизу зліва, щоб швидко отримувати результати (прискорення часу не впливає на показник).

Ось перелік проблем поділу, які беруть участь у тестах:

 6/2 = 3
 3/3 = 1
 4/1 = 4
 0/1 = 0
12/4 = 3
12/3 = 4
 9/3 = 3
10/2 = 5

Приклад вводу / виводу

12/3=4
in:  BBBBBBBBBBBBRRR
out: RRRR

10/2=5
in:  BBBBBBBBBBRR
out: RRRRR

9/3=3
in:  BBBBBBBBBRRR
out: RRR

0/1=0
in:  R
out: 

Класні речі, та гра! Не справді давали часу на гольф у ці дні, але пам’ятайте це.
tomsmeding

Відповіді:


6

Я мав би це передбачити, але все одно гарну роботу. Я хотів би, щоб ігровий движок дозволив мені створити більше 8 тестових випадків. Чи варто створювати більше проблем з мануфактурою в майбутньому?
PhiNotPi

1
Звичайно, мені вони подобаються.
Кіт Рендалл

4

Рахунок: 15:51

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

Чи діє ділення шляхом повторного віднімання. Використовує Y серед R, щоб відстежувати, скільки дільник ми відняли до цього часу. Використовує Gs для підрахунку коефіцієнта.

Наприклад, стан на початку кожної зовнішньої петлі (відразу після початкового запису G) для 12/4 є:

BBBBBBBBBBBB RRRR G
BBBBBBBB RRRR GG
BBBB RRRR GGG
RRRR GGGG

Якщо не залишилося жодного Bs, гаджет у нижній частині лівої смужки Rs, а потім виводить # G-1 Rs.

Внутрішня петля знімає по черзі B і використовує Y для відстеження положення. Починаючи з зовнішньої петлі:

BBBBBBBB RRRR GG
BBBBBBB RYRRR GG
BBBBBB RRYRR GG
BBBBB RRRYR GG
BBBB RRRR GG

Внутрішня петля - це коробка розміром 3х4 в нижньому правому куті. Макет решти, ймовірно, можна трохи покращити, але внутрішня петля щільна.

http://pleasingfungus.com/Manufactoria/?lvl=34&code=c11:13f2;g12:2f3;p12:3f7 ;c13:3f3;p13:1f3 ;b12:1f2 ;r14 Meridianf3; p14:7f7;r13:7f2 ; q14: 8f7; g13: 8f2; p14: 9f4; r13: 10f2; p14: 10f7; b15: 10f0; q14: 11f7; p15: 11f3; r16: 11f1; p15: 8f0; r15: 9f1; c16: 8f0; c13 : 2f0; c15: 2f0; c16: 2f0; c17: 2f0; c11: 3f3; c11: 4f3; c11: 6f3; c11: 7f3; c11: 8f3; c11: 9f3; c11: 5f3; p11: 10f7; q11: 11f6 ; q11: 12f7; r10: 12f2; c10: 10f2; q16: 10f5; y14: 6f3; q14: 5f3; g15: 5f1; c15: 4f1; c15: 3f1; c17: 9f1; c17: 8f1; c17: 7f1; c17 : 6F1; с17: 5f1; с17: 4F1; с17: 3F1; Y16: 9F1; G17: 10f1; Q14: 2F4; G14: 1F3; & CTM = Divide_and_Conquer; Input_will_be_X_blues_followed_by_Y_reds, _output_X / Y_reds; bbbbbbrr: ррр | bbbrrr: г | bbbbr : rrrr | r: | bbbbbbbbbbbrrrr: rrr | bbbbbbbbbbbrrrr: rrrr | bbbbbbbbbrrr: rrr | bbbbbbbbbbrr: rrrrr; 13; 3; 0 ;


Шляхом різкої перебудови частин вашого дизайну я зміг зменшити бал до 13:28 за допомогою 53 частин.
PhiNotPi

2
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.