- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
.
Т Е С Т
К А К О Й В Ы П Р О Г Р А М М И С Т ?
Источник: Datamation, march, 1977
Norman Grabowsky "What kind of programmer are you?"
Этот тест расскажет о вашем программировании больше, чем вы сами
хотели бы знать.
Переменная I представляет собой полное слово с фиксированной
точкой. I принимает значения 1 либо 2. Если I оказалось равным 1,
замените его на 2 и наоборот.
Сравните ваше решение с десятью предложенными. Найдите одно или
несколько наиболее похожих на ваше и прочитайте в разделе "категории"
краткую характеристику. Вы можете кодировать на любом языке, но для
сравнения предпочтительнее всего использовать PL/1.
Р е ш е н и я.
1. IF I='2' THEN I=1;
ELSE I=2;
2. IF I=2 THEN I=1;
IF I=1 THEN I=2;
3. IF I=1 THEN GOTO SKIP;
I=1;
GOTO DONE;
SKIP: I=2;
DONE:
4. J=2;
IF I=2 THEN J=1;
I=J;
5. DECLARE SWITCH LABEL;
. . .
IF I=1 THEN SWITCH=ONE;
IF I=2 THEN SWITCH=TWO;
GOTO SWITCH;
ONE: I=2;
GOTO DONE;
TWO: I=1;
DONE:
6. DECLARE ONETWO(2) FIXED BIN(31) INIT (2,1);
. . .
I=ONETWO(I);
7. I=3-I;
8. I=I-(I/2*2)+1;
9. IF I=2
THEN DO;
I=1;
END;
ELSE DO;
I=2;
END;
10. IF I=1 THEN I=2;
IF I^=2 THEN DO;
PUT LIST('ПЛOXOE I - ЗAMEHEHO HA 1');
I=1;
END;
j123123 11.03.2020 13:56 # +1
j123123 11.03.2020 13:56 # +2
bormand 11.03.2020 14:13 # +3
11. Крестоблядь
Зачем? В условии не сказано, что делать для других чисел. Поэтому будем считать, что поведение программы не определено.
gost 11.03.2020 14:16 # +2
Явно писать в условии, что «I принимает значения 1 либо 2», а потом ругать решения за то, что они не проверяют другие числа — долбоебизм.
bormand 11.03.2020 14:16 # +2
Какой тест )))
1024-- 11.03.2020 14:33 # +3
> Преподаватель программирования.
> Это решение хуже предыдущего. Много ли, однако, обучающих программированию сами написали и отладили хотя бы одну программу?
j123123 11.03.2020 14:59 # +3
Там просто ТЗ нечеткое. Написано:
> Переменная I представляет собой полное слово с фиксированной точкой. I принимает значения 1 либо 2. Если I оказалось равным 1, замените его на 2 и наоборот.
Что значит "наоборот"? Может "наоборот" значит что можно вообще ничего не заменять и оставить всё как есть, если I оказалось не равным 1?
bormand 11.03.2020 15:06 # +4
bormand 11.03.2020 15:15 # +1
0x02 - start bit, write 1 to start operation
guest8 11.03.2020 17:52 # −999
bormand 11.03.2020 17:55 # 0
guest8 11.03.2020 18:03 # −999
bormand 11.03.2020 18:14 # 0
guest8 11.03.2020 18:23 # −999
gost 11.03.2020 18:52 # +1
А для определения кастов есть простенькое правило: если происходит какая-то ёбанная магия, то это точно «reinterpret_cast».
guest8 11.03.2020 18:56 # −999
bormand 11.03.2020 19:00 # +1
Unsurprising behavior, лол.
gost 11.03.2020 19:02 # +1
bormand 11.03.2020 19:06 # +1
1024-- 11.03.2020 19:07 # +3
bormand 11.03.2020 19:11 # +2
1024-- 11.03.2020 19:16 # +2
bormand 11.03.2020 19:34 # +2
gost 11.03.2020 19:38 # +1
bormand 11.03.2020 19:43 # +1
gost 11.03.2020 19:59 # 0
bormand 11.03.2020 20:05 # +2
guest8 11.03.2020 20:15 # −999
1024-- 11.03.2020 20:44 # +1
Чувствую, какой-то подвох из-за недостижимости.
То ли дело python, где всё честно
bormand 11.03.2020 19:12 # +2
-fno-common-sense (default)
bormand 11.03.2020 19:14 # +2
gost 11.03.2020 14:02 # 0
gost 11.03.2020 14:03 # 0
Какого хера?
bormand 11.03.2020 14:06 # +1
gost 11.03.2020 14:09 # 0
[I]
1024-- 11.03.2020 14:11 # +2
gost 11.03.2020 14:13 # 0
gost 11.03.2020 14:14 # 0
1024-- 11.03.2020 14:20 # +2
bormand 11.03.2020 14:23 # +1
bormand 11.03.2020 14:27 # +1
-0
gost 11.03.2020 14:28 # 0
gost 11.03.2020 14:30 # 0
1024-- 11.03.2020 14:35 # 0
Я копирую в консольку хрома даже из исходного кода страницы, а там сначала
а потом
gost 11.03.2020 14:39 # 0
1024-- 11.03.2020 14:41 # 0
P.S. "потом" происходит после того, как я вручную удаляю символы, т.к. умею считать только до трёх, и длина 8 мне не говорит о том, есть ли дополнительный символ, или нет.
gost 11.03.2020 14:45 # 0
1024-- 11.03.2020 14:52 # +2
Теперь всё ясно. 8 и 3 вместо 9 и 4 - из-за того, что ноль сам специальный, и нет подвохов с утерей спецушни.
А вот мой ноль обычный, поэтому психоза вокруг него присутствует и копируется.
bormand 11.03.2020 18:43 # 0
bormand 11.03.2020 18:47 # 0
j123123 06.09.2021 06:57 # +1
TOPT 06.09.2021 06:58 # 0
LinuxGovno 06.09.2021 12:36 # 0
j123123 07.09.2021 04:41 # 0
1024-- 11.03.2020 14:15 # +1
> '[•I]'
< '[I]'
gost 11.03.2020 14:17 # 0
1024-- 11.03.2020 14:21 # +1
gost 11.03.2020 14:27 # 0
1024-- 11.03.2020 14:09 # 0
Stallman 11.03.2020 16:10 # 0
gost 11.03.2020 14:03 # 0
gost 11.03.2020 14:04 # 0
bormand 11.03.2020 14:05 # +1
[i] [i] [I]
gost 11.03.2020 14:07 # 0
1024-- 11.03.2020 14:07 # 0
3.14159265 13.03.2020 01:53 # 0
j123123 11.03.2020 14:08 # 0
3.14159265 13.03.2020 01:48 # +1
3.14159265 13.03.2020 02:03 # 0
кАКОЙ ПИТУХ )))
Реально табличное решение — это вореции п.6.
gost 13.03.2020 06:43 # 0
bormand 11.03.2020 14:08 # +2
j123123 11.03.2020 14:10 # 0
gost 11.03.2020 14:13 # 0
>>> но опять-таки встает проблема: как же в нем разобраться?
Чот какая-то питушня.
j123123 11.03.2020 14:17 # 0
Это тупо "вычли I из 3 и присвоили в I" - хуй знает что это и зачем это надо
bormand 11.03.2020 14:18 # 0
3.14159265 13.03.2020 03:33 # 0
Я о вас был лучшего мнения. Это же классическая битушня.
К тому же вычитание — слишком дорогая операция.
А сумматоры нынче в цене.
I^=3;
bormand 13.03.2020 03:52 # 0
Ну да, распространение переноса совсем не бесплатное. А у xor'а все биты параллелятся.
kak 14.03.2020 05:49 # 0
3.14159265 14.03.2020 13:33 # 0
j123123 11.03.2020 14:31 # +3
gost 11.03.2020 14:32 # +2
1024-- 11.03.2020 14:40 # +3
Стоило бы было бы проверить домен там, где данные приходят от питользователя или апитушка, а в отдельную функцию вынести только бизнес-логику и assert.
j123123 11.03.2020 14:48 # +3
bormand 11.03.2020 14:41 # +2
j123123 11.03.2020 14:44 # +2
У вас баг
bormand 11.03.2020 14:48 # 0
j123123 11.03.2020 14:49 # +1
bormand 11.03.2020 14:49 # 0
j123123 11.03.2020 14:52 # 0
Что ж это за такая особая арифметика, где она применяется?
1024-- 11.03.2020 14:59 # 0
Для отладки редко проявляющихся багов создаются переменные такого типа.
3.14159265 13.03.2020 03:30 # +1
>гётигп агг[i-l]
Чем обычное З^I не зашло?
j123123 13.03.2020 18:39 # 0
Это слишком частное решение. Завтра заказчик может поменять ТЗ и захотеть чтоб если i равно 3 то тогда менялось на 7, если i равно 2 то тогда менялось на 5, если i равно 1 то тогда менялось на 100500 - тогда весь код с xor-ом надо будет полностью выкинуть, а в моем решении придется лишь слегка поменять правило в ассерте и изменить таблицу поиска.
3.14159265 13.03.2020 19:17 # 0
>Завтра заказчик может поменять ТЗ и захотеть чтоб если i равно 3 то тогда менялось на "3" , если i равно 2 то тогда менялось на белочку, если i равно 1 то тогда менялось на 7 красных линий, некоторые нужно нарисовать зеленым цветом, а еще некоторые — прозрачным.
>Тогда весь код с таблицей надо будет полностью выкинуть
j123123 13.03.2020 19:53 # 0
j123123 13.03.2020 20:00 # 0
Ну тут же очевидно. Надо тогда таблицу заменить на массив из указателей на функции, вторая функция меняет на "3", первая меняет на белочку, нулевая меняет на 7 красных линий, некоторые нужно нарисовать зеленым цветом, а еще некоторые — прозрачным. Так что код с таблицей надо будет только слегка поменять
3.14159265 13.03.2020 20:11 # 0
Оверхедная питушня.
Пример: расширить программу чтобы нечетные значения удваивались, а чётные декрементились.
Решение с таблицей лажает.
Подгадывать, под то что «завтра захочет заказчик» — безблагодатно. Нужно выбирать простейшее решение.
j123123 13.03.2020 21:36 # 0
Desktop 11.03.2020 14:54 # +1
bormand 11.03.2020 14:58 # 0
gost 11.03.2020 15:03 # +3
j123123 11.03.2020 15:07 # 0
bormand 11.03.2020 15:09 # +1
gost 11.03.2020 15:11 # 0
gost 11.03.2020 15:12 # 0
gost 11.03.2020 15:16 # 0
bormand 11.03.2020 15:18 # 0
gost 11.03.2020 15:23 # 0
1024-- 11.03.2020 15:24 # 0
bormand 11.03.2020 16:00 # 0
3.14159265 13.03.2020 02:15 # +3
Но все решения, признаться — скучное говно, без фантазии.
Потому я представляю вам:https://ideone.com/gl49UO
3.14159265 13.03.2020 02:23 # +3
guest8 13.03.2020 02:33 # −999
3.14159265 13.03.2020 02:47 # 0
https://ideone.com/YqhFTa
3.14159265 13.03.2020 03:59 # +1
Не зря он меня ещё в универе от него страшно тошнило.
В отличие от Сишки и асма, которые ещё тогда мне нравились.
https://ideone.com/mtmPPq
Если ещё увижу пассаль-сектанта, блеющего об охуенно развитой типизации этой дырявой вербозной недосишки, мгновенно солью мразотное животное.
MAPA6y 13.03.2020 06:33 # +1
https://ideone.com/hJUQXe
На строчке, где должно вывести 3, падает с ошибкой 201.
Режим $R+ не стали включать по умолчанию из-за сишников, которые ноют, что проверки снижают пирфоманс.
3.14159265 14.03.2020 01:49 # 0
3.14159265 14.03.2020 01:53 # 0
Либо через несколько итераций сводит большинство входных значений I к искомым 1 и 2.
PS. Хотя блин, похоже на случай №8.
3.14159265 14.03.2020 02:07 # 0
HAJIuBKuH 14.03.2020 03:45 # 0
bormand 14.03.2020 04:19 # +1
bormand 14.03.2020 04:37 # 0
bormand 14.03.2020 04:21 # +3
3.14159265 14.03.2020 04:38 # +1
j123123 14.03.2020 19:23 # 0
Циклический сдвиг влево (на самом деле похрен куда, учитывая что два бита всего)
bormand 14.03.2020 20:07 # 0
I = (2 << 1) | (2 >> (2 - 1)) = 4 | 1 = 5
Хуйня какая-то. Надо &3 добавить, наверное.
j123123 14.03.2020 20:39 # +1
3.14159265 14.03.2020 21:36 # 0
Не проще ли тогда сделать
bormand 14.03.2020 21:39 # 0
j123123 14.03.2020 21:59 # +1
error: cannot bind bitfield 'I.main()::<unnamed union>::s.main()::<unnamed union>::<unnamed struct>::a' to 'unsigned int&'
Крестоговно опять обосралось
3.14159265 14.03.2020 23:28 # 0
Боже Царя храни!
j123123 14.03.2020 22:09 # +2
Поэтому я за Си