- 1
- 2
- 3
- 4
- 5
- 6
#include <stdio.h>
#include <math.h>
char s[6];
main(){
puts(gets(s)[2]==45&8u>*s-65&8u>s[1]-49&8u>s[3]-65&8u>s[4]-49?abs((*s-s[3])*(s[1]-s[4]))-2?"NO":"YES":"ERROR");
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
−1
#include <stdio.h>
#include <math.h>
char s[6];
main(){
puts(gets(s)[2]==45&8u>*s-65&8u>s[1]-49&8u>s[3]-65&8u>s[4]-49?abs((*s-s[3])*(s[1]-s[4]))-2?"NO":"YES":"ERROR");
}
666_N33D135 01.10.2018 09:14 # 0
bormand 01.10.2018 09:17 # 0
666_N33D135 01.10.2018 09:21 # 0
bormand 01.10.2018 09:42 # 0
OBEH 01.10.2018 10:53 # 0
666_N33D135 01.10.2018 11:05 # 0
666_N33D135 01.10.2018 09:22 # 0
adrnin 25.10.2018 20:17 # +1
roman-kashitsyn 25.10.2018 22:05 # +2
восьмибитные
guest8 25.10.2018 22:07 # −999
OBEH 01.10.2018 09:35 # −1
666_N33D135 01.10.2018 09:43 # 0
guest8 01.10.2018 14:02 # −999
guest8 01.10.2018 14:03 # −999
guest8 01.10.2018 14:09 # −999
guest8 01.10.2018 14:32 # −999
guest8 01.10.2018 14:48 # −999
guest8 01.10.2018 15:03 # −999
666_N33D135 01.10.2018 15:45 # 0
guest8 01.10.2018 16:00 # −999
guest8 01.10.2018 14:22 # −999
guest8 01.10.2018 14:22 # −999
guest8 01.10.2018 14:25 # −999
guest8 01.10.2018 14:32 # −999
guest8 01.10.2018 14:37 # −999
666_N33D135 01.10.2018 14:58 # 0
guest8 01.10.2018 15:03 # −999
666_N33D135 01.10.2018 15:05 # 0
guest8 01.10.2018 16:15 # −999
Elvenfighter 01.10.2018 12:02 # +2
Алгоритм:
1. Читаем 5 символов, провеняем, что матчит /^[A-H][0-9]-[A-H][0-9]/ (иначе -> "ERRROR")
2. Вычисляем модуль перемножения по вертикали (s[0] - s[3]) и горизонтали (s[1] - s[4]). Если == 2 --> "YES", иначе "NO"
Использованные трюки:
* Отсутствие возвращаемого типа main (совместимо с ANSI C, aka C98)
* Числовые литералы вместо символьных (65 == 'A', 49 == '1', '45' == '-')
* Битовый оператор & вместо логического &&
* Вычитание (- 2) в тернернике вместо сравнения (!= 2)
* Использование результата gets() (gets(s)[2]) наряду с аргументом (s)
Не понимаю только почему литерал 8u вместо просто 8.
*Фух, писал полчаса, наконец ни одного мата*
666_N33D135 01.10.2018 12:43 # 0
> почему литерал 8u
Чтобы тип привелся к беззнаковому, чтобы не проверять > 0 и < 8
guest8 01.10.2018 13:02 # −999
666_N33D135 01.10.2018 14:56 # 0
guest8 01.10.2018 15:20 # −999
Elvenfighter 01.10.2018 15:57 # 0
Где-то видел такое:
UPD А нет, там еще что-то было..
Elvenfighter 01.10.2018 16:08 # 0
Замени инклюды на <bits/stdc++.h>
guest8 01.10.2018 17:05 # −999
guest8 02.10.2018 19:03 # −999
guest8 02.10.2018 19:05 # −999
guest8 02.10.2018 19:06 # −999
guest8 02.10.2018 19:10 # −999
guest8 02.10.2018 19:17 # −999
guest8 02.10.2018 19:20 # −999
guest8 01.10.2018 13:04 # −999
guest8 01.10.2018 13:05 # −999
Elvenfighter 01.10.2018 15:29 # 0
Тю, я думал ты его решение принес.
666_N33D135 01.10.2018 15:31 # 0
Elvenfighter 01.10.2018 15:43 # 0
И уже в комментарии делать всю магию (нутыпонел)
666_N33D135 01.10.2018 16:05 # 0
666_N33D135 01.10.2018 12:48 # 0
Там C++, просто так вышло, что эта программа попала в пожмножество Си.
666_N33D135 01.10.2018 13:00 # 0
/^[A-H][1-9]-[A-H][1-9]$/