Что нового

Проверка счастливый IP адрес

alex33

Скриптер
Сообщения
1,457
Репутация
186
AutoIt: 3.3.12.0
Версия: 1.0

Категория: Вспомогательные функции, Строки, Данные, Интернет, Математика, Приколы, Сеть, Разное

Описание: Возможно это уже было, не знаю. Просто от того, что меня здесь давно уже не было я решил от нечего делать зайти и написать такую функцию.
Сегодня я зашёл на сайт 2ip.ru и увидел, что мой IP сейчас счастливый, вот мне и пришла такая идея, чтобы сделать такую функцию...
https://2ip.ru/happy-ip/ сказал(а):
Счастливый IP
Судя по всему, сегодня ваш день!!! Поздравляем!!!
Почему, спросите вы? Да потому что сегодня вы вышли в интернет со счастливым IP.
Все очень просто, сумма цифр, составляющих первую часть вашего IP адреса равна сумме цифр составляющих вторую часть вашего IP адреса. Это случается достаточно редко, но как видите, все таки случается. И как раз сегодня это случилось с вами! Наверное, как раз сегодня у вас счастливый день, поэтому дерзайте. Играйте в спортлото и казино, спорьте на большие деньги или выскажите наконец шефу все, что вы о нем думаете. Ведь сегодня ваш день и есть шанс, что все это закончится в вашу пользу :smile:

Код/Пример:
Код:
ConsoleWrite( _IPIsHappy("109.126.251.218") &@CRLF) ; True
ConsoleWrite( _IPIsHappy("176.59.39.134") &@CRLF) ; False

Func _IPIsHappy($sIP)
	; author: Alex33 ; Date: 10.09.2016 .
	Local $aPartsIP, $isHappy = False
	If Not StringRegExp($sIP, "^([\d]{1,3}\.){3}[\d]{1,3}$") Then Return False
	$aPartsIP = StringRegExp($sIP, "^((?:[\d]{1,3})\.(?:[\d]{1,3}))\.((?:[\d]{1,3})\.(?:[\d]{1,3}))$", 3)
	If IsArray($aPartsIP) And UBound($aPartsIP) == 2 Then $isHappy = Execute(Execute(StringTrimRight(StringRegExpReplace(StringReplace($aPartsIP[0], ".", ""), "([\d])", "\1+"), 1)) == Execute(StringTrimRight(StringRegExpReplace(StringReplace($aPartsIP[1], ".", ""), "([\d])", "\1+"), 1)))
	Return $isHappy
EndFunc

Файл: UDF_function_IPIsHappy_v1.0.au3

Снимок:
нет

История версий:
1.0

Источник: autoit-script.ru
Автор(ы): Alex33
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
alex33
Многовато у вас лишних вызовов.

Минималистичный вариант:
Код:
Func _IPIsHappy($s)
	Local $o, $v
	For $d In StringSplit($s, '', 2)
		If $d == '.' Then $o += 1
		$v += $d * (($o > 1) ? -1 : 1)
	Next
	Return $v == 0
EndFunc


С проверкой входного IP увеличится на 1 строку.
 
Верх