Facebook puzzles - do they work?

User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

Post by Интеррапт »

xtigr wrote:
Мальчик-Одуванчик wrote: Тогда в чистом виде регулярное выражение - одна строчка на питоне. Без дополнительных библиотек.
Никак не специалист по питону, учусь только, но получилось в одну строчку и без регулярных выражений:)
Ну так код в студию :)
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Facebook puzzles - do they work?

Post by crypto5 »

Интеррапт wrote:
xtigr wrote:
Мальчик-Одуванчик wrote: Тогда в чистом виде регулярное выражение - одна строчка на питоне. Без дополнительных библиотек.
Никак не специалист по питону, учусь только, но получилось в одну строчку и без регулярных выражений:)
Ну так код в студию :)
Великий код :umnik1:
In vino Veritas!
xtigr
Уже с Приветом
Posts: 617
Joined: 23 Sep 2005 06:56
Location: SFBA

Re: Facebook puzzles - do they work?

Post by xtigr »

Интеррапт wrote:
xtigr wrote:
Мальчик-Одуванчик wrote: Тогда в чистом виде регулярное выражение - одна строчка на питоне. Без дополнительных библиотек.
Никак не специалист по питону, учусь только, но получилось в одну строчку и без регулярных выражений:)
Ну так код в студию :)
len([i for i in str.split('.') if i.isdigit() and int(i) < 256])==4

str = есть заданная строка

конструктивные замечания приветствуются.
Ну конечно можно оформить это дело в процедуру, но это мелочи
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Facebook puzzles - do they work?

Post by crypto5 »

xtigr wrote:
Интеррапт wrote:
xtigr wrote:
Мальчик-Одуванчик wrote: Тогда в чистом виде регулярное выражение - одна строчка на питоне. Без дополнительных библиотек.
Никак не специалист по питону, учусь только, но получилось в одну строчку и без регулярных выражений:)
Ну так код в студию :)
len([i for i in str.split('.') if i.isdigit() and int(i) < 256])==4

str = есть заданная строка

конструктивные замечания приветствуются.
Ну конечно можно оформить это дело в процедуру, но это мелочи
"1.1.1.1......." ?
In vino Veritas!
xtigr
Уже с Приветом
Posts: 617
Joined: 23 Sep 2005 06:56
Location: SFBA

Re: Facebook puzzles - do they work?

Post by xtigr »

crypto5 wrote: "1.1.1.1......." ?
got me there:)
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

Post by Интеррапт »

xtigr wrote:
Интеррапт wrote:
xtigr wrote:
Мальчик-Одуванчик wrote: Тогда в чистом виде регулярное выражение - одна строчка на питоне. Без дополнительных библиотек.
Никак не специалист по питону, учусь только, но получилось в одну строчку и без регулярных выражений:)
Ну так код в студию :)
len([i for i in str.split('.') if i.isdigit() and int(i) < 256])==4

str = есть заданная строка

конструктивные замечания приветствуются.
Ну конечно можно оформить это дело в процедуру, но это мелочи
Ответ не принимается :)
Т.к. ваш валидатор вот такую строчку пропустит:

str = "..........205.....205....205......205............"

и такую тоже

str = "0000000205.00205.0000000205.0000000000205......"

Update. Блин, Crypto опередил
dmicher
Уже с Приветом
Posts: 376
Joined: 14 May 2011 00:48

Re: Facebook puzzles - do they work?

Post by dmicher »

M. Ridcully wrote:
Мальчик-Одуванчик wrote:задача стояла проверить IP адрес, значит нужно вникать и в ограничения адресации. Странно другое - в условиях задачи не указана маска подсети.
Ну хорошо, хорошо. У вас с 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.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Facebook puzzles - do they work?

Post by crypto5 »

Интеррапт wrote:
xtigr wrote:
Интеррапт wrote:
xtigr wrote:
Мальчик-Одуванчик wrote: Тогда в чистом виде регулярное выражение - одна строчка на питоне. Без дополнительных библиотек.
Никак не специалист по питону, учусь только, но получилось в одну строчку и без регулярных выражений:)
Ну так код в студию :)
len([i for i in str.split('.') if i.isdigit() and int(i) < 256])==4

str = есть заданная строка

конструктивные замечания приветствуются.
Ну конечно можно оформить это дело в процедуру, но это мелочи
Ответ не принимается :)
Т.к. ваш валидатор вот такую строчку пропустит:

str = "..........205.....205....205......205............"

и такую тоже

str = "0000000205.00205.0000000205.0000000000205......"

Update. Блин, Crypto опередил
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
In vino Veritas!
xtigr
Уже с Приветом
Posts: 617
Joined: 23 Sep 2005 06:56
Location: SFBA

Re: Facebook puzzles - do they work?

Post by xtigr »

len([i for i in str.split('.') if 0<len(i)<4 and i.isdigit() and int(i) < 256])==4
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Facebook puzzles - do they work?

Post by crypto5 »

xtigr wrote:len([i for i in str.split('.') if 0<len(i)<4 and i.isdigit() and int(i) < 256])==4
01.01.01.01
In vino Veritas!
xtigr
Уже с Приветом
Posts: 617
Joined: 23 Sep 2005 06:56
Location: SFBA

Re: Facebook puzzles - do they work?

Post by xtigr »

crypto5 wrote:
xtigr wrote:len([i for i in str.split('.') if 0<len(i)<4 and i.isdigit() and int(i) < 256])==4
01.01.01.01
уже сам понял, лан , спасиб
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

Post by Интеррапт »

xtigr wrote:len([i for i in str.split('.') if 0<len(i)<4 and i.isdigit() and int(i) < 256])==4
Та же проблема - пропустит строку вида "101.101.101.101......"
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Facebook puzzles - do they work?

Post by crypto5 »

Интеррапт wrote:
xtigr wrote:len([i for i in str.split('.') if 0<len(i)<4 and i.isdigit() and int(i) < 256])==4
Та же проблема - пропустит строку вида "101.101.101.101......"
Все еще интереснее: "1.1.1.1.а"
In vino Veritas!
Hamster
Уже с Приветом
Posts: 11475
Joined: 20 Nov 2000 10:01
Location: Escondido, CA

Re: Facebook puzzles - do they work?

Post by Hamster »

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
Протоукр
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

Post by Интеррапт »

Вообщем, пользуйтесь, господа, кодом вида:

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"
и будет всем счастье :)
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Facebook puzzles - do they work?

Post by crypto5 »

Интеррапт 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!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

Post by Интеррапт »

crypto5 wrote:
2. Проверить является ли строка валидным IP адресом (без всяких библиотек).
Да я помню, помню. Поэтому на приз не претендую :)
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Facebook puzzles - do they work?

Post by crypto5 »

Интеррапт wrote:
crypto5 wrote:
2. Проверить является ли строка валидным IP адресом (без всяких библиотек).
Да я помню, помню. Поэтому на приз не претендую :)
Ну а нам с Хамстером приз полагается? Интересно в фейсбук возьмут теперь? :D
In vino Veritas!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

Post by Интеррапт »

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
Этот код пропустит строку вида "101.101.00000000000000000000000000.101"

так что победителем все равно остается Crypto :)
Hamster
Уже с Приветом
Posts: 11475
Joined: 20 Nov 2000 10:01
Location: Escondido, CA

Re: Facebook puzzles - do they work?

Post by Hamster »

Да, действительно.

len([i for i in inp.split('.', 3) if i.isdigit() and int(i) < 256 and str(int(i))==i])==4
Протоукр
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Facebook puzzles - do they work?

Post by crypto5 »

Hamster wrote:Да, действительно.

len([i for i in inp.split('.', 3) if i.isdigit() and int(i) < 256 and str(int(i))==i])==4
:good:
In vino Veritas!
User avatar
IvanGrozniy
Уже с Приветом
Posts: 10379
Joined: 04 Feb 2004 14:14
Location: Edgewater, NJ

Re: Facebook puzzles - do they work?

Post by IvanGrozniy »

fruit6 wrote:надо полагать за вопрос -- банан и "fire"?
Смотря, как ответите :)
Я поясню, что имелось в виду.
Дело в том, что из тех коммерческих баз данных, с которыми мне пришлось поработать и которые показывают георгафическое местоположение по соотношению IP адреса, размещает этот самый IP адрес, как число long. Затем используется спец функция для преобразования данного числа в "обычный" IP адрес с тремя точками и четырьмя числами от 0 до 255.
Очевидно, что ни один из ответивших ни разу в глаза таких баз данных не видел. В принципе незнание такого формата IP я бы не посчитал критичным при приеме на работу. На месте усвоят быстро.
dmicher
Уже с Приветом
Posts: 376
Joined: 14 May 2011 00:48

Re: Facebook puzzles - do they work?

Post by dmicher »

IvanGrozniy wrote:
fruit6 wrote:надо полагать за вопрос -- банан и "fire"?
Смотря, как ответите :)
Я поясню, что имелось в виду.
Дело в том, что из тех коммерческих баз данных, с которыми мне пришлось поработать и которые показывают георгафическое местоположение по соотношению IP адреса, размещает этот самый IP адрес, как число long. Затем используется спец функция для преобразования данного числа в "обычный" IP адрес с тремя точками и четырьмя числами от 0 до 255.
Очевидно, что ни один из ответивших ни разу в глаза таких баз данных не видел. В принципе незнание такого формата IP я бы не посчитал критичным при приеме на работу. На месте усвоят быстро.
ну вопрос не предполагает никакого знания IP :) - хоят если вдруг кто то в теме это +, IP просто выбран для наглядности так сказать прикладная задача. С таким же успехом можно выбрать телефон формата XXX-XXX-XXXX распарсить или еще чтото.
User avatar
IvanGrozniy
Уже с Приветом
Posts: 10379
Joined: 04 Feb 2004 14:14
Location: Edgewater, NJ

Re: Facebook puzzles - do they work?

Post by IvanGrozniy »

dmicher wrote:
IvanGrozniy wrote:
fruit6 wrote:надо полагать за вопрос -- банан и "fire"?
Смотря, как ответите :)
Я поясню, что имелось в виду.
Дело в том, что из тех коммерческих баз данных, с которыми мне пришлось поработать и которые показывают георгафическое местоположение по соотношению IP адреса, размещает этот самый IP адрес, как число long. Затем используется спец функция для преобразования данного числа в "обычный" IP адрес с тремя точками и четырьмя числами от 0 до 255.
Очевидно, что ни один из ответивших ни разу в глаза таких баз данных не видел. В принципе незнание такого формата IP я бы не посчитал критичным при приеме на работу. На месте усвоят быстро.
ну вопрос не предполагает никакого знания IP :) - хоят если вдруг кто то в теме это +, IP просто выбран для наглядности так сказать прикладная задача. С таким же успехом можно выбрать телефон формата XXX-XXX-XXXX распарсить или еще чтото.
:)
Телефоны парсить еще та задача. Особенно интересный формат у англичан +44(0)123 123... Нолик в скобках это не то, что кажется.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

Post by Интеррапт »

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
:good:
Ладно, тогда придется выдать свой вариант, который чуть короче, чем у Хамстера :)

Code: Select all

all(map(lambda v: v.isdigit() and int(v)<256 and str(int(v))==v, s.split('.', 3)))

Return to “Работа и Карьера в IT”