Ну так код в студиюxtigr wrote:Никак не специалист по питону, учусь только, но получилось в одну строчку и без регулярных выражений:)Мальчик-Одуванчик wrote: Тогда в чистом виде регулярное выражение - одна строчка на питоне. Без дополнительных библиотек.
Facebook puzzles - do they work?
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Facebook puzzles - do they work?
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Facebook puzzles - do they work?
Великий кодИнтеррапт wrote:Ну так код в студиюxtigr wrote:Никак не специалист по питону, учусь только, но получилось в одну строчку и без регулярных выражений:)Мальчик-Одуванчик wrote: Тогда в чистом виде регулярное выражение - одна строчка на питоне. Без дополнительных библиотек.
In vino Veritas!
-
- Уже с Приветом
- Posts: 617
- Joined: 23 Sep 2005 06:56
- Location: SFBA
Re: Facebook puzzles - do they work?
len([i for i in str.split('.') if i.isdigit() and int(i) < 256])==4Интеррапт wrote:Ну так код в студиюxtigr wrote:Никак не специалист по питону, учусь только, но получилось в одну строчку и без регулярных выражений:)Мальчик-Одуванчик wrote: Тогда в чистом виде регулярное выражение - одна строчка на питоне. Без дополнительных библиотек.
str = есть заданная строка
конструктивные замечания приветствуются.
Ну конечно можно оформить это дело в процедуру, но это мелочи
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Facebook puzzles - do they work?
"1.1.1.1......." ?xtigr wrote:len([i for i in str.split('.') if i.isdigit() and int(i) < 256])==4Интеррапт wrote:Ну так код в студиюxtigr wrote:Никак не специалист по питону, учусь только, но получилось в одну строчку и без регулярных выражений:)Мальчик-Одуванчик wrote: Тогда в чистом виде регулярное выражение - одна строчка на питоне. Без дополнительных библиотек.
str = есть заданная строка
конструктивные замечания приветствуются.
Ну конечно можно оформить это дело в процедуру, но это мелочи
In vino Veritas!
-
- Уже с Приветом
- Posts: 617
- Joined: 23 Sep 2005 06:56
- Location: SFBA
Re: Facebook puzzles - do they work?
got me there:)crypto5 wrote: "1.1.1.1......." ?
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Facebook puzzles - do they work?
Ответ не принимаетсяxtigr wrote:len([i for i in str.split('.') if i.isdigit() and int(i) < 256])==4Интеррапт wrote:Ну так код в студиюxtigr wrote:Никак не специалист по питону, учусь только, но получилось в одну строчку и без регулярных выражений:)Мальчик-Одуванчик wrote: Тогда в чистом виде регулярное выражение - одна строчка на питоне. Без дополнительных библиотек.
str = есть заданная строка
конструктивные замечания приветствуются.
Ну конечно можно оформить это дело в процедуру, но это мелочи
Т.к. ваш валидатор вот такую строчку пропустит:
str = "..........205.....205....205......205............"
и такую тоже
str = "0000000205.00205.0000000205.0000000000205......"
Update. Блин, Crypto опередил
-
- Уже с Приветом
- Posts: 376
- Joined: 14 May 2011 00:48
Re: Facebook puzzles - do they work?
Можно и так .M. Ridcully wrote:Ну хорошо, хорошо. У вас с IP-адресацией, видимо, что-то личноеМальчик-Одуванчик wrote:задача стояла проверить IP адрес, значит нужно вникать и в ограничения адресации. Странно другое - в условиях задачи не указана маска подсети.
Тогда можно переформулировать вопрос: провалидировать четыре целых числа в диапазоне 0..255, разделённые точкой. И никакой IP-адресации!
- если человек говорит про регулярные выражения это +2;
- если знает как это сделать с регулярными выражениями это +5;
- если после этого сможет написать без регулярных выражений это +5 (тут я проверяю азы типа циклов и работы с указателями например если чел пишет на С/C++ - вы удивитесь сколько людей пишущих на С это не могуд сделать нормально);
- если его код потом нормально масштабируется на другие виды адресов +3 ( тупо c 4 чисел на 6 но если IPv4 to IPv6 +2);
- сам тестирует свой код +3.
PS: про никакую адресацию знать не нада IP адрес был выбран просто для наглядности, но если человек начинает задовать правильные вопросы по IP +2.
Last edited by dmicher on 03 Jul 2012 20:38, edited 3 times in total.
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Facebook puzzles - do they work?
len([i for i in str.split('.') if (len(i) == 1 or len(i) > 1 and i[0] != '0') and i.isdigit() and int(i) < 256])==4 and str.count('.') == 3Интеррапт wrote:Ответ не принимаетсяxtigr wrote:len([i for i in str.split('.') if i.isdigit() and int(i) < 256])==4Интеррапт wrote:Ну так код в студиюxtigr wrote:Никак не специалист по питону, учусь только, но получилось в одну строчку и без регулярных выражений:)Мальчик-Одуванчик wrote: Тогда в чистом виде регулярное выражение - одна строчка на питоне. Без дополнительных библиотек.
str = есть заданная строка
конструктивные замечания приветствуются.
Ну конечно можно оформить это дело в процедуру, но это мелочи
Т.к. ваш валидатор вот такую строчку пропустит:
str = "..........205.....205....205......205............"
и такую тоже
str = "0000000205.00205.0000000205.0000000000205......"
Update. Блин, Crypto опередил
In vino Veritas!
-
- Уже с Приветом
- Posts: 617
- Joined: 23 Sep 2005 06:56
- Location: SFBA
Re: Facebook puzzles - do they work?
len([i for i in str.split('.') if 0<len(i)<4 and i.isdigit() and int(i) < 256])==4
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Facebook puzzles - do they work?
01.01.01.01xtigr wrote:len([i for i in str.split('.') if 0<len(i)<4 and i.isdigit() and int(i) < 256])==4
In vino Veritas!
-
- Уже с Приветом
- Posts: 617
- Joined: 23 Sep 2005 06:56
- Location: SFBA
Re: Facebook puzzles - do they work?
уже сам понял, лан , спасибcrypto5 wrote:01.01.01.01xtigr wrote:len([i for i in str.split('.') if 0<len(i)<4 and i.isdigit() and int(i) < 256])==4
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Facebook puzzles - do they work?
Та же проблема - пропустит строку вида "101.101.101.101......"xtigr wrote:len([i for i in str.split('.') if 0<len(i)<4 and i.isdigit() and int(i) < 256])==4
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Facebook puzzles - do they work?
Все еще интереснее: "1.1.1.1.а"Интеррапт wrote:Та же проблема - пропустит строку вида "101.101.101.101......"xtigr wrote:len([i for i in str.split('.') if 0<len(i)<4 and i.isdigit() and int(i) < 256])==4
In vino Veritas!
-
- Уже с Приветом
- Posts: 11475
- Joined: 20 Nov 2000 10:01
- Location: Escondido, CA
Re: Facebook puzzles - do they work?
len([i for i in inp.split('.', 3) if i.isdigit() and int(i) < 256 and (int(i)==0 or i[0]!='0')])==4
или короче
len([i for i in inp.split('.', 3) if i.isdigit() and int(i) < 256 and str(int(i))==i])==4
или короче
len([i for i in inp.split('.', 3) if i.isdigit() and int(i) < 256 and str(int(i))==i])==4
Протоукр
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Facebook puzzles - do they work?
Вообщем, пользуйтесь, господа, кодом вида:
и будет всем счастье
Code: Select all
try:
socket.inet_pton(socket.AF_INET, "1.1.1.1")
print "good"
except socket.error:
print "bad"
Code: Select all
try:
socket.inet_pton(socket.AF_INET6, "2001:0db8:85a3:0000:0000:8a2e:0370:7334")
print "good"
except socket.error:
print "bad"
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Facebook puzzles - do they work?
Интеррапт wrote:Вообщем, пользуйтесь, господа, кодом вида:
Code: Select all
try: socket.inet_pton(socket.AF_INET, "1.1.1.1") print "good" except socket.error: print "bad"
и будет всем счастьеCode: Select all
try: socket.inet_pton(socket.AF_INET6, "2001:0db8:85a3:0000:0000:8a2e:0370:7334") print "good" except socket.error: print "bad"
2. Проверить является ли строка валидным IP адресом (без всяких библиотек).
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Facebook puzzles - do they work?
Да я помню, помню. Поэтому на приз не претендуюcrypto5 wrote:2. Проверить является ли строка валидным IP адресом (без всяких библиотек).
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Facebook puzzles - do they work?
Ну а нам с Хамстером приз полагается? Интересно в фейсбук возьмут теперь?Интеррапт wrote:Да я помню, помню. Поэтому на приз не претендуюcrypto5 wrote:2. Проверить является ли строка валидным IP адресом (без всяких библиотек).
In vino Veritas!
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Facebook puzzles - do they work?
Этот код пропустит строку вида "101.101.00000000000000000000000000.101"Hamster wrote:len([i for i in str.split('.', 3) if i.isdigit() and int(i) < 256 and (int(i)==0 or i[0]!='0')])==4
так что победителем все равно остается Crypto
-
- Уже с Приветом
- Posts: 11475
- Joined: 20 Nov 2000 10:01
- Location: Escondido, CA
Re: Facebook puzzles - do they work?
Да, действительно.
len([i for i in inp.split('.', 3) if i.isdigit() and int(i) < 256 and str(int(i))==i])==4
len([i for i in inp.split('.', 3) if i.isdigit() and int(i) < 256 and str(int(i))==i])==4
Протоукр
-
- Уже с Приветом
- Posts: 4637
- Joined: 24 Oct 2009 01:38
- Location: Chicago ;-) -> SFBA!
Re: Facebook puzzles - do they work?
Hamster wrote:Да, действительно.
len([i for i in inp.split('.', 3) if i.isdigit() and int(i) < 256 and str(int(i))==i])==4
In vino Veritas!
-
- Уже с Приветом
- Posts: 10379
- Joined: 04 Feb 2004 14:14
- Location: Edgewater, NJ
Re: Facebook puzzles - do they work?
Смотря, как ответитеfruit6 wrote:надо полагать за вопрос -- банан и "fire"?
Я поясню, что имелось в виду.
Дело в том, что из тех коммерческих баз данных, с которыми мне пришлось поработать и которые показывают георгафическое местоположение по соотношению IP адреса, размещает этот самый IP адрес, как число long. Затем используется спец функция для преобразования данного числа в "обычный" IP адрес с тремя точками и четырьмя числами от 0 до 255.
Очевидно, что ни один из ответивших ни разу в глаза таких баз данных не видел. В принципе незнание такого формата IP я бы не посчитал критичным при приеме на работу. На месте усвоят быстро.
-
- Уже с Приветом
- Posts: 376
- Joined: 14 May 2011 00:48
Re: Facebook puzzles - do they work?
ну вопрос не предполагает никакого знания IP - хоят если вдруг кто то в теме это +, IP просто выбран для наглядности так сказать прикладная задача. С таким же успехом можно выбрать телефон формата XXX-XXX-XXXX распарсить или еще чтото.IvanGrozniy wrote:Смотря, как ответитеfruit6 wrote:надо полагать за вопрос -- банан и "fire"?
Я поясню, что имелось в виду.
Дело в том, что из тех коммерческих баз данных, с которыми мне пришлось поработать и которые показывают георгафическое местоположение по соотношению IP адреса, размещает этот самый IP адрес, как число long. Затем используется спец функция для преобразования данного числа в "обычный" IP адрес с тремя точками и четырьмя числами от 0 до 255.
Очевидно, что ни один из ответивших ни разу в глаза таких баз данных не видел. В принципе незнание такого формата IP я бы не посчитал критичным при приеме на работу. На месте усвоят быстро.
-
- Уже с Приветом
- Posts: 10379
- Joined: 04 Feb 2004 14:14
- Location: Edgewater, NJ
Re: Facebook puzzles - do they work?
dmicher wrote:ну вопрос не предполагает никакого знания IP - хоят если вдруг кто то в теме это +, IP просто выбран для наглядности так сказать прикладная задача. С таким же успехом можно выбрать телефон формата XXX-XXX-XXXX распарсить или еще чтото.IvanGrozniy wrote:Смотря, как ответитеfruit6 wrote:надо полагать за вопрос -- банан и "fire"?
Я поясню, что имелось в виду.
Дело в том, что из тех коммерческих баз данных, с которыми мне пришлось поработать и которые показывают георгафическое местоположение по соотношению IP адреса, размещает этот самый IP адрес, как число long. Затем используется спец функция для преобразования данного числа в "обычный" IP адрес с тремя точками и четырьмя числами от 0 до 255.
Очевидно, что ни один из ответивших ни разу в глаза таких баз данных не видел. В принципе незнание такого формата IP я бы не посчитал критичным при приеме на работу. На месте усвоят быстро.
Телефоны парсить еще та задача. Особенно интересный формат у англичан +44(0)123 123... Нолик в скобках это не то, что кажется.
-
- Уже с Приветом
- Posts: 17281
- Joined: 07 Sep 2011 10:05
- Location: Seattle, WA
Re: Facebook puzzles - do they work?
Ладно, тогда придется выдать свой вариант, который чуть короче, чем у Хамстераcrypto5 wrote:Hamster wrote:Да, действительно.
len([i for i in inp.split('.', 3) if i.isdigit() and int(i) < 256 and str(int(i))==i])==4
Code: Select all
all(map(lambda v: v.isdigit() and int(v)<256 and str(int(v))==v, s.split('.', 3)))