Вернуть последний цвет ввода в Мануфактуру


10

Эта головоломка является следующей в моей серии испытаний мануфактуры.

Фон

Мануфактура - это игровой / двумерный язык программирования. Игрок должен создать программы, которые будут манипулировать очередью, чтобы получить желаемый результат. Его легко освоить, но трудно освоить, поэтому он позволяет создавать самые разнообразные задачи. Если вы не знаете, о чем я говорю, советую вам пройти первые несколько обучающих уровней игры.

Вызов

Ваша задача - создать машину, которая будет возвращать самый последний элемент входной строки. Чтобы сделать это еще более сложным, входная строка может быть любой комбинацией всех четырех цветов .

Официальный пользовательский уровень для использования находится здесь:

http://pleasingfungus.com/Manufactoria/?ctm=Last_in_Line!;IN:_a_series_of_colors_OUT:_the_very_last_color;byrgyrbyrrgry:y|bbrrbryyyrrbr:r|ggryybrryr:r|b:b|:|gyrbrygbrygbyrb:b|brbrbryyrygbrg:g|rrrrrrrrrr: r; 13; 3; 0 ;

Задача этой недели в основном сосредоточена на идее сжатия. Я выбрал эту задачу, чтобы требовать огромного беспорядка конвейерных лент. Тот факт, что все четыре цвета отображаются на входе, означает, что хранить информацию очень сложно.

Хотя я не пытался выполнить сжатие, мой первый работающий прототип состоял из 114 частей и помещался в пространство 13x13, почти не оставляя места.

счет

Целью этой задачи является использование нескольких частей, насколько это возможно. Оценка - это количество размещенных деталей, и выигрывает самая низкая оценка.

Хотя существует всего 8 тестовых случаев, ваше творение должно быть в состоянии теоретически функционировать под любым тестовым примером. Тестовые случаи предоставлены для целей отладки.

Примеры

in:  byrgyrbyrrgry
out: y
in:  ggryybrryr
out: r
in:         #don't you love degenerate cases?
out:
in:  gyrbrygbrygbyrb
out: b

Ответы:


6

65 частей

введите описание изображения здесь Честно говоря, я даже не мог придумать идею поставить пары читателей друг против друга, пока не увидел это в уже опубликованных решениях. Но позже я начал придумывать множество приемов оптимизации.

Ссылка на сайт


... вы можете положить конвейерные ленты поверх друг друга?
SuperJedi224

7

1
Я построил около пяти различных решений для этого, и все они были более 100 частей в размере. Ваше решение поражает меня.
хлебница

4

+1 - несколько идей: сдвиньте верхний красно-синий разделитель на три позиции на юг, вы можете сохранить нижнюю левую часть (сдвиньте одну влево)
Говард

4

Небольшая перестановка конвейерных лент уменьшила это до 81 части. Смотрите здесь . Кроме того, изменение цветов вокруг, кажется, делает это быстрее (хотя это действительно не имеет значения) с 6:23 до 5:38. Смотрите эту вставку для URL.
Волатильность

@Volatility Спасибо за 3 части. Кажется быстрее полностью зависит от тестов, так что это действительно не имеет значения ;-)
Говард

2
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.