Facebook puzzles - do they work?

User avatar
IvanGrozniy
Уже с Приветом
Posts: 10379
Joined: 04 Feb 2004 14:14
Location: Edgewater, NJ

Re: Facebook puzzles - do they work?

Post by IvanGrozniy »

Интеррапт wrote:
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)))
Что будет если передать 1.1.1 ?
Что будет если передать -1.1.-2.3?
Садитесь - незачет :)
dmishe
Уже с Приветом
Posts: 111
Joined: 05 Jul 2011 23:58

Re: Facebook puzzles - do they work?

Post by dmishe »

Еще короче?)

Code: Select all

all(v.isdigit() and int(v)<256 and str(int(v))==v for v in s.split('.', 3))
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

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

IvanGrozniy wrote:
Интеррапт wrote:
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)))
Что будет если передать 1.1.1 ?
Что будет если передать -1.1.-2.3?
Садитесь - незачет :)
Да, протупил c 1.1.1
А вот с негативными числами все нормально будет - сработает
User avatar
IvanGrozniy
Уже с Приветом
Posts: 10379
Joined: 04 Feb 2004 14:14
Location: Edgewater, NJ

Re: Facebook puzzles - do they work?

Post by IvanGrozniy »

Интеррапт wrote:
IvanGrozniy wrote:
Интеррапт wrote:
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)))
Что будет если передать 1.1.1 ?
Что будет если передать -1.1.-2.3?
Садитесь - незачет :)
Да, протупил c 1.1.1
А вот с негативными числами все нормально будет - сработает
Так в том-то и прикол, что не должно сработать с негативными ;)
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

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

IvanGrozniy wrote: Так в том-то и прикол, что не должно сработать с негативными ;)
Ну так о чем и речь - вернет False если будет негативно число. Для этого там isdigit стоит, которое знак минус не пропустит.
User avatar
IvanGrozniy
Уже с Приветом
Posts: 10379
Joined: 04 Feb 2004 14:14
Location: Edgewater, NJ

Re: Facebook puzzles - do they work?

Post by IvanGrozniy »

Интеррапт wrote:
IvanGrozniy wrote: Так в том-то и прикол, что не должно сработать с негативными ;)
Ну так о чем и речь - вернет False если будет негативно число. Для этого там isdigit стоит, которое знак минус не пропустит.
Хмм. Я этого синтаксиса не знаю. А что будет, если будет число 45? По логике isdigit не получится - две же цифры. Или у вас isdigit = isnumber?
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

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

Вообщем все, последний вариант и как бонус за то, что я ступил с предидущим вариантом, мы этот алгоритм распаралеливаем :mrgreen:

Code: Select all

import multiprocessing

def validateIpComponent(s):
    return s.isdigit() and int(s)<256 and str(int(s))==s

def validateIp(s):
    pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
    return all(pool.map(validateIpComponent, s.split('.'))) and s.count('.') == 3
User avatar
IvanGrozniy
Уже с Приветом
Posts: 10379
Joined: 04 Feb 2004 14:14
Location: Edgewater, NJ

Re: Facebook puzzles - do they work?

Post by IvanGrozniy »

Интеррапт wrote:Вообщем все, последний вариант и как бонус за то, что я ступил с предидущим вариантом, мы этот алгоритм распаралеливаем :mrgreen:

Code: Select all

import multiprocessing

def validateIpComponent(s):
    return s.isdigit() and int(s)<256 and str(int(s))==s

def validateIp(s):
    pool = multiprocessing.Pool(processes=multiprocessing.cpu_count())
    return all(pool.map(validateIpComponent, s.split('.', 3))) and s.count('.') == 3
:)
Что-то вас на работу не возьмут, наверное. Ваша прога обломится в очередной раз. Например на этом адресе 0.001.32.2
Я ведь я даже вашего языка программирования не знаю :)
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Facebook puzzles - do they work?

Post by crypto5 »

Интеррапт wrote:
IvanGrozniy wrote:
Интеррапт wrote:
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)))
Что будет если передать 1.1.1 ?
Что будет если передать -1.1.-2.3?
Садитесь - незачет :)
Да, протупил c 1.1.1
А вот с негативными числами все нормально будет - сработает
подытоживая предыдущие труды: len(filter(lambda v:v.isdigit() and int(v)<256 and str(int(v))==v,s.split('.', 3)))==4
In vino Veritas!
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

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

IvanGrozniy wrote: Что-то вас на работу не возьмут, наверное. Ваша прога обломится в очередной раз. Например на этом адресе 0.001.32.2
Я ведь я даже вашего языка программирования не знаю :)
В чем именно обломится? Вы по существу говорите.
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Facebook puzzles - do they work?

Post by crypto5 »

crypto5 wrote:
Интеррапт wrote:
IvanGrozniy wrote:
Интеррапт wrote:
crypto5 wrote: :good:
Ладно, тогда придется выдать свой вариант, который чуть короче, чем у Хамстера :)

Code: Select all

all(map(lambda v: v.isdigit() and int(v)<256 and str(int(v))==v, s.split('.', 3)))
Что будет если передать 1.1.1 ?
Что будет если передать -1.1.-2.3?
Садитесь - незачет :)
Да, протупил c 1.1.1
А вот с негативными числами все нормально будет - сработает
подытоживая предыдущие труды: len(filter(lambda v:v.isdigit() and int(v)<256 and str(int(v))==v,s.split('.', 3)))==4
Хотя вариант хамстера все равно короче: len([i for i in s.split('.', 3) if i.isdigit() and int(i)<256 and str(int(i))==i])==4
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 »

Интеррапт wrote:
IvanGrozniy wrote: Что-то вас на работу не возьмут, наверное. Ваша прога обломится в очередной раз. Например на этом адресе 0.001.32.2
Я ведь я даже вашего языка программирования не знаю :)
В чем именно обломится? Вы по существу говорите.
Ваша кострукция str(int("001")) == "001" вернет false. Не-е?
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

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

IvanGrozniy wrote:
Интеррапт wrote:
IvanGrozniy wrote: Что-то вас на работу не возьмут, наверное. Ваша прога обломится в очередной раз. Например на этом адресе 0.001.32.2
Я ведь я даже вашего языка программирования не знаю :)
В чем именно обломится? Вы по существу говорите.
Ваша кострукция str(int("001")) == "001" вернет false. Не-е?
Мда.... :)

int("001") == 1
str(1) == "1"
User avatar
IvanGrozniy
Уже с Приветом
Posts: 10379
Joined: 04 Feb 2004 14:14
Location: Edgewater, NJ

Re: Facebook puzzles - do they work?

Post by IvanGrozniy »

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

Re: Facebook puzzles - do they work?

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

IvanGrozniy wrote:Кстати, Хамстера это тоже касается
Это похоже только вас касается :)

int("001") == 1
str(1) == "1"
User avatar
IvanGrozniy
Уже с Приветом
Posts: 10379
Joined: 04 Feb 2004 14:14
Location: Edgewater, NJ

Re: Facebook puzzles - do they work?

Post by IvanGrozniy »

Интеррапт wrote:
IvanGrozniy wrote:
Интеррапт wrote:
IvanGrozniy wrote: Что-то вас на работу не возьмут, наверное. Ваша прога обломится в очередной раз. Например на этом адресе 0.001.32.2
Я ведь я даже вашего языка программирования не знаю :)
В чем именно обломится? Вы по существу говорите.
Ваша кострукция str(int("001")) == "001" вернет false. Не-е?
Мда.... :)

int("001") == 1
str(1) == "1"
Отдам должное за толлераность к критикующему интервьюеру :fr:
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

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

IvanGrozniy wrote: Отдам должное за толлераность к критикующему интервьюеру :fr:
Вот видите, помогли критикующему интервьюеру разобраться, что он был неправ :) Эдак можно и интервью завалить )))
User avatar
IvanGrozniy
Уже с Приветом
Posts: 10379
Joined: 04 Feb 2004 14:14
Location: Edgewater, NJ

Re: Facebook puzzles - do they work?

Post by IvanGrozniy »

Интеррапт wrote:
IvanGrozniy wrote:Кстати, Хамстера это тоже касается
Это похоже только вас касается :)

int("001") == 1
str(1) == "1"
Вы подумайте. Ваша прога же не работает. str(1) != "001"
А вообще, я, наверное, зря здесь спорю.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

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

IvanGrozniy wrote:
Интеррапт wrote:
IvanGrozniy wrote:Кстати, Хамстера это тоже касается
Это похоже только вас касается :)

int("001") == 1
str(1) == "1"
Вы подумайте. Ваша прога же не работает. str(1) != "001"
А вообще, я, наверное, зря здесь спорю.
Так о чем и речь :)
s.isdigit() and int(s)<256 and str(int(s))==s

т.е. если вы передадите "001" - то ес-но вернется False. Что нам и нужно, типа подразумеваем, что компонента правильная, если она, например "25", а если "00025" - то считается неправильной. Это такой строгий парсер.

Хотя, например, утилиты вроде ping спокойно принимают числа с нулям, вроде "10.000025.1.1"
User avatar
crypto5
Уже с Приветом
Posts: 4637
Joined: 24 Oct 2009 01:38
Location: Chicago ;-) -> SFBA!

Re: Facebook puzzles - do they work?

Post by crypto5 »

Думаю что Иван считает что 01.01.01.01 это правильный адресс а Интерапт наоборот. Я угадал?
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:Думаю что Иван считает что 01.01.01.01 это правильный адресс а Интерапт наоборот. Я угадал?
Да, скорее всего так и есть. Просто мы на прошлой страничке как бы сошлись на том, что делаем строгий валидатор. Есле менее строгий, то ес-но Хамстера код был бы еще короче, просто убрали бы последнюю проверку.
User avatar
IvanGrozniy
Уже с Приветом
Posts: 10379
Joined: 04 Feb 2004 14:14
Location: Edgewater, NJ

Re: Facebook puzzles - do they work?

Post by IvanGrozniy »

Интеррапт wrote:
IvanGrozniy wrote:
Интеррапт wrote:
IvanGrozniy wrote:Кстати, Хамстера это тоже касается
Это похоже только вас касается :)

int("001") == 1
str(1) == "1"
Вы подумайте. Ваша прога же не работает. str(1) != "001"
А вообще, я, наверное, зря здесь спорю.
Так о чем и речь :)
s.isdigit() and int(s)<256 and str(int(s))==s

т.е. если вы передадите "001" - то ес-но вернется False. Что нам и нужно, типа подразумеваем, что компонента правильная, если она, например "25", а если "00025" - то считается неправильной.
Ну так, если нолики впреди приставить, то IP адрес все-равно правильный получится. Даже мой Сафари услужливо делает ссылку из последнего приведенного примера IP адреса.
Ох, как прав был автор задачки, говоря, что на ней 90% программистов отсеивается :)
Тем более вы еще плохой атитьюд проявили. Это плохо. Мда.
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

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

IvanGrozniy wrote:Ну так, если нолики впреди приставить, то IP адрес все-равно правильный получится. Даже мой Сафари услужливо делает ссылку из последнего приведенного примера IP адреса.
Ох, как прав был автор задачки, говоря, что на ней 90% программистов отсеивается :)
Тем более вы еще плохой атитьюд проявили. Это плохо. Мда.
Не смешите :)
scorpion
Уже с Приветом
Posts: 3435
Joined: 16 Dec 2003 06:23
Location: SF Bay Area

Re: Facebook puzzles - do they work?

Post by scorpion »

IvanGrozniy wrote:Ну так, если нолики впреди приставить, то IP адрес все-равно правильный получится.
Если 001.001.001.001, то да, а Вы попробуйте 010.010.010.010, не думаю, что Вы хотели бы соединиться с 8.8.8.8 :wink:
User avatar
Интеррапт
Уже с Приветом
Posts: 17281
Joined: 07 Sep 2011 10:05
Location: Seattle, WA

Re: Facebook puzzles - do they work?

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

scorpion wrote:
IvanGrozniy wrote:Ну так, если нолики впреди приставить, то IP адрес все-равно правильный получится.
Если 001.001.001.001, то да, а Вы попробуйте 010.010.010.010, не думаю, что Вы хотели бы соединиться с 8.8.8.8 :wink:
Во-во. Только писать это начал, что IvanGrozniy подставил нолики и получил IP адрес с octal числами.
Или пусть попробует даже набрать ping 010.010.010.010 и удивится.

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