−99
- 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
for i in range(0,len(m)):
if i==0:
f=False
s += x[m[i]]
else:
if i==len(m)-1:
if not f:
f=False
s += ',' + x[m[i]]
else:
f=False
s += x[m[i]]
break
else:
if m[i]-m[i-1]==1:
if m[i+1]-m[i]==1:
if not f:
f=True
s += '-'
continue
else:
continue
else:
if not f:
f=False
s += ',' + x[m[i]]
else:
f=False
s += x[m[i]]
else:
f=False
s += ','+x[m[i]]
Была задача: на вход(m) подается массив чисел, например [1,3,5,6,7], а на выходе получаем человекочитаемую строку(s) "пн,ср,пт-вс"
Вышло такое из меня пару месяцев назад, теперь я никогда не смогу в нем разобраться х_х
Запостил: MAaxim91,
05 Февраля 2014
hdkeeper 05.02.2014 15:43 # +1
http://ideone.com/GOA8ce
bormand 05.02.2014 16:25 # +14
Почти поймал!
myaut 05.02.2014 16:23 # 0
bormand 05.02.2014 16:29 # +1
Не айс :)
myaut 05.02.2014 16:30 # 0
bormand 05.02.2014 16:33 # −1
LispGovno 05.02.2014 23:28 # −1
anonimb84a2f6fd141 06.02.2014 11:28 # −1
sorted()?
bormand 05.02.2014 16:24 # +1
tirinox 05.02.2014 18:40 # 0
wvxvw 05.02.2014 23:06 # +3
guest 01.03.2014 15:15 # +1
Vindicar 06.02.2014 11:07 # +1
anonimb84a2f6fd141 06.02.2014 11:31 # +1
Кто-то еще не знает про from __future__ import unicode_literals?
>map={}
Опасно, хоть и он используется только для чтения.
Плюсанул за то, что хоть кто-то разбил на функции.
Vindicar 06.02.2014 11:50 # −1
>from __future__ import unicode_literals
Это с какой версии? 2.6? а потом уже но так длиннее и несколько менее очевидно.
anonimb84a2f6fd141 06.02.2014 13:10 # 0
Понятно тебе как автору, менее очевидно для делающего code review.
>но так длиннее и несколько менее очевидно.
ПИТОНОПРОБЛЕМЫ. В соседнем гк спрашивал - а нахуя вообще эту "фичу" сделали?
>Это с какой версии? 2.6?
Да, а что? Бер 2.5 <= еще кто-то жить не может? Уже 3.4 есть.
Vindicar 06.02.2014 14:24 # −1
А третий Питон вообще больной вопрос. Надо что ли опять проверить нужные мне либы на совместимость...
anonimb84a2f6fd141 06.02.2014 14:27 # 0
Ну ни хуя себе "изменения". Ты походу питоном нечасто пользуешься.
bormand 06.02.2014 13:43 # −1
Я тоже разбивал, см. выше ;)
P.S. Но у меня как-то упорото получилось...
wvxvw 06.02.2014 22:24 # −1
С одним циклом и минимумом математики.
Vindicar 07.02.2014 11:41 # −1
Wut?
Такого, правда, в исходной задаче не было, но все равно нехорошо.
wvxvw 07.02.2014 12:06 # −1
wvxvw 07.02.2014 12:22 # −1
Получается очень многословно... жаль, что в Питоне нельзя со списками как со списками работать, можно было бы по типу хаскелевского варианта груп-бай организовать.
Vindicar 07.02.2014 12:30 # −1
wvxvw 07.02.2014 13:38 # −1
bormand 07.02.2014 13:40 # −1
wvxvw 07.02.2014 13:45 # −1
bormand 07.02.2014 13:48 # −1
wvxvw 07.02.2014 14:07 # −1
bormand 07.02.2014 14:47 # −1
bormand 07.02.2014 14:54 # −1
wvxvw 07.02.2014 15:52 # +1
Что с людьми делают выходные...
ЗЫ. Получился список из Схемы, вместо КЛ, но уж так и быть.
anonimb84a2f6fd141 06.02.2014 11:27 # +1
laMer007 06.02.2014 14:21 # 0
http://ideone.com/vJcu8x
Но почему мне пришлось на большую часть этого кода писать реализацию стандартной функции groupBy? Аж 5 строк. Почему стандартный groupBy из стандартный библиотеки требует выполнения условия транзитивности для элементов группы? Наверное дофига оптимизаторы.
laMer007 06.02.2014 15:12 # −1
https://ideone.com/uJl0ix
myaut вот этот питушек память не желеет
laMer007 06.02.2014 15:52 # −1
> if f==True:
Кстати насколько это адекватно для питона?
Автор:
вполне
Vindicar 07.02.2014 11:51 # −1
guest 07.02.2014 12:54 # 0
1024-- 07.02.2014 13:38 # −1
Моих знаний питона не хватает, чтобы различить == и is.
guest 07.02.2014 14:14 # −1
print(3==False)
print(3 is True)
print(3 is False)
https://ideone.com/PAEJrD
И что не так?
В 3 теперь нельзя писать True = False
1024-- 07.02.2014 14:19 # −1
А я и не знаю, что не так, я не питонист, просто прочитал в комментарии про "is", посмотрел, что он на моих примерах не отличается от ==, и теперь мне, как и верхнему гостю, хочется узнать, что хотел сказать автор.
Vindicar 09.02.2014 13:48 # 0
По-крайней мере на втором питоне.
bormand 09.02.2014 14:40 # −1
laMer007 06.02.2014 15:20 # −1
надо заменить на
Довольно жалко, что пришлось реализовывать заново стандартную функцию, кода бы меньше было. Главное об этой особенности стандартной функции нигде не сказано что она не работает адекватно в подобных случаях. Хоть бы требование вписали к предикату.
http://ideone.com/LelJ7Q
bormand 06.02.2014 15:29 # 0
Ага, странная она. Сравнивает с первым элементом группы, а не с предыдущим. Об этом стоило бы написать в доке.
bormand 06.02.2014 15:26 # +2
Слабые дни... Женский календарь что ли? :)
laMer007 06.02.2014 15:30 # 0
kegdan 07.02.2014 08:58 # 0
kegdan 07.02.2014 08:58 # −1
http://ideone.com/05JzkM
Vindicar 07.02.2014 12:00 # −1
Ну и пары дней выдает как интервал =)
kegdan 07.02.2014 12:04 # −1
0 - это терминатор. Можно вместо терминатора проверять на конец массива.
Vindicar 07.02.2014 12:16 # −1
{1, 2, 5, 6, 7, 0, 7, 3, 4, 5} >>> "пн - вт, пт - вс, er, вс,"
Так что 0 тут работает не как терминатор, а как еще один элемент.
Это просто функция не выводит последний элемент получившегося списка. :)
kegdan 07.02.2014 12:32 # −1
meridium 12.02.2014 12:53 # 0
meridium 12.02.2014 20:15 # 0
Вот так вроде всё правильно работает:
guest 15.02.2014 13:09 # 0
anonimb84a2f6fd141 15.02.2014 13:25 # −7
anonimb84a2f6fd141 15.02.2014 13:29 # −4
anonimb84a2f6fd141 15.02.2014 13:49 # −4
anonimb84a2f6fd141 15.02.2014 13:50 # −4
anonimb84a2f6fd141 15.02.2014 13:50 # −4
anonimb84a2f6fd141 15.02.2014 13:49 # −4
anonimb84a2f6fd141 15.02.2014 13:50 # −4
meridium 17.02.2014 04:44 # 0
guest 01.08.2014 11:29 # 0
>>> nums = (1,2,3,4,5,6,7)
>>> print reduce(lambda s,r: re.sub(*r,string=s), ((';{2,}',','),(';\w{3};','-'),(';', ',')), ';'.join(('',day)[i in nums] for i,day in enumerate(week,1)))
Mon-Wed-Fri-Sun
kegdan 01.08.2014 14:02 # 0
666_N33D135 19.09.2018 16:43 # +2
gost 19.09.2018 17:45 # +1
roman-kashitsyn 19.09.2018 23:51 # +1
OBEH 20.09.2018 00:27 # +1
roman-kashitsyn 20.09.2018 00:29 # 0
guest8 20.09.2018 00:54 # −999
OBEH 20.09.2018 03:04 # 0
guest8 20.09.2018 11:19 # −999
guest8 20.09.2018 13:50 # −999
LinuxGovno 21.09.2018 22:37 # 0
OBEH 20.09.2018 03:01 # 0
guest8 20.09.2018 03:19 # −999
vistefan 20.09.2018 10:30 # +2
Лучше ⓟⓗⒹ.
guest8 20.09.2018 11:38 # −999
guest8 20.09.2018 11:41 # −999
OBEH 20.09.2018 11:43 # 0