Задача взята отсюда.
Условие
Зашифруйте текст из входного потока, заменяя каждый символ результатом сложения по модулю 2 его кода и кода предыдущего зашифрованного символа. Первый символ шифруется инверсией бит.
Входные данные
Символьная последовательность.
Выходные данные
Зашифрованная символьная последовательность.
Тесты :
| Входные данные | Выходные данные | 
| Where is the table? | a8 c0 a5 d7 b2 92 fb 88 a8 dc b4 d1 f1 85 e4 86 ea 8f b0 | 
| What a nice day! | a8 c0 a1 d5 f5 94 b4 da b3 d0 b5 95 f1 90 e9 c8 | 
| Glad to see you! | b8 d4 b5 d1 f1 85 ea ca b9 dc b9 99 e0 8f fa db | 
Код на Haxe:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package; import cpp.Int8; import cpp.Lib; import haxe.io.Bytes; class Main  { 	static function main()  	{ 		var c:Int8 = Sys.stdin().readInt8(); 		c = ~c; 		var out:Bytes = Bytes.alloc(1); 		out.setUInt16(0, c); 		Sys.stdout().writeString(out.toHex()); 		var c1:Int8; 		while (true) { 			c1 = Sys.stdin().readInt8(); 			if (c1 == "\n".charCodeAt(0)) 				break; 			c1 = c ^ c1; 			out.setUInt16(0, c1); 			Sys.stdout().writeString(" " + out.toHex()); 			c = c1; 		} 		Sys.stdout().writeString("\n"); 	} } | 
Ход решения:
Считываем код первого символа, инвертируем его и выводим в шестнадцатеричной системе счисления:
| 12 13 14 15 16 | var c:Int8 = Sys.stdin().readInt8(); c = ~c; var out:Bytes = Bytes.alloc(1); out.setUInt16(0, c); Sys.stdout().writeString(out.toHex()); | 
Вводим вторую переменную и запускаем цикл, который будет работать, пока считывание не дойдет до переноса строки. Здесь мы считываем код очередного символа, складываем его по модулю 2 с шифром предыдущего символа, выводим через пробел шестнадцатеричное представление полученного кода и записываем этот код в первую переменную:
| 17 18 19 20 21 22 23 24 25 26 | var c1:Int8; while (true) { 	c1 = Sys.stdin().readInt8(); 	if (c1 == "\n".charCodeAt(0)) 		break; 	c1 = c ^ c1; 	out.setUInt16(0, c1); 	Sys.stdout().writeString(" " + out.toHex()); 	c = c1; } | 
После окончания цикла выводим перенос строки и завершаем программу.
| 27 | Sys.stdout().writeString("\n"); | 
Ссылки:
Рабочий код для тестирования на try.haxe.org: Try Haxe !
- e-olimp 3966. An ardent collector of butterflies - 13.06.2017
- e-olymp 1078. The line degree - 12.06.2017
- A704 - 11.06.2017
