сложить два числа (программистское)

топ 100 блогов avva12.05.2015 Забавная задачка из блога Джона Грэма-Камминга. Он пишет, что ему ее задали на вступительном экзамене на компьютерный факультет
в Оксфорде в 1980-х.

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

У машины есть три инструкции следующего вида:

Z n - обнулить ячейку n
I n - увеличить на 1 содержимое ячейки n
J n,m,стрелка - сравнить ячейки n и m, и если их содержимое различается, то прыгнуть на инструкцию, на которую указывает стрелка (вместо стрелки в тексте можно использовать метки или номера инструкций).

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

Z 0
loop:
I 0
J 0, 20 -> loop

Задание: написать программу, которая складывает два числа. Перед запуском программы числа помещаются в ячейки 0 и 1. В конце работы программы сумма должна лежать в ячейке 2. Про числа известно, что они целые неотрицательные.

Эта задача не будет сложной для опытного программиста, но есть некоторые тонкости. Интересно также посмотреть, как ее можно сделать покороче. Я справился за 16 инструкций.

Update: несколько типичных ошибок: 1) не прочитали внимательно, что делает инструкция J; 2) не работает, когда один из аргументов 0; 3) не работает, когда оба аргумента 0.

Но уже в комментах есть несколько правильных версий, в том числе короче моей (я теперь понимаю, что несколько перестраховался в своем дизайне).

Оставить комментарий

Предыдущие записи блогера :
Архив записей в блогах:
...летел в Прагу в пятнадцатый раз и случайно встретил в аэропорту блогера Икс, а потом шофер повез на дегустацию пива и встретил блогеров Икс, Игрек и еще пятерых, тоже случайно... (с) из отчетов о путешествиях топовых блогеров. Принято считать, что жизнь путешествующего блогера это ...
...
в 17 регионах РФ -запретили девочкам- в мороз минус 40- надевать одежду -типа мальчикам можно одевать трусы и штаны - девочки должны -в мороз минус 40 -в школу должны ходить в трусах -без теплых брюк телеграм вёрстка -телеграм можем ...
Сегодня, 1 мая, вся страна отмечает Праздник Весны и Труда. Во многих городах России проходят шествия и праздничные митинги, народ гуляет и всячески расслабляется. Традиционно, утром в Москве прошел марш сторонников коммунистической идеологии. Погода, к сожалению, подвела, но на шествие ...
На Сан Мигеле, несколько дней мы гуляли по Фурнашу и его окрестностях. Ведь именно там больше всего горячих источников — что было одним из «За» пунктов при выборе острова для визита. Мы очень любим в таких источниках поплескаться и поплавать, что в Сербских. что в Камчатских, что в ...