Не могу понять, как написать валидатор

  • Автор темы Автор темы Squats
  • Дата начала Дата начала
Статус
В этой теме нельзя размещать новые ответы.

Squats

Новичок
Есть массив:

PHP:
$items = [
    '10120', // 11120
    '11200', // 11222
    '02130', // не валидно
    '00123', // 11123
    '01202', // 01222
    '02012', // 22212
    '02020', // 22222
    '07720', // не валидно
    '01077', // 11177
    '07704', // не валидно
    '77108', // не валидно
    '07070', // не валидно
    '12070', // не валидно
    '34004', // 34444
    '00044', // не валидно
    '23000' // не валидно
];

// в комментарии то, что должно в итоге получаться.
Там где написано "не валидно - значит замену не делаем, оставляем как есть".
Короче мои попытки все, просто увенчались провалом, я начал городить огород через if и там получилась тьма и оно не работает должным образом.

То есть был такое огород:

PHP:
//01123 = 11123
if ($i1 == 0 && $i2 == $i3 && $i2 <> 7) {
    $i1 = $i2;
}
//10123 = 11123
if ($i2 == 0 && $i1 == $i3 && $i1 <> 7) {
   $i2 = $i3;
}
//11023 = 11123
if ($i3 == 0 && $i1 == $i2 && $i2 <> 7) {
   $i3 = $i2;
}

То есть приходилось морочиться и делать какую-то дич, тут просто тонна условий тогда будет если так делать.
Знатоки, выручайте, неужели нет способа избавиться от таких болей?
 
Кто разобрался, какая тут закономерность?
у меня ничего не выходит
например только решил, что валидные только те, которые содержат 0,1 и 2, но одна тройка затесалась
плюс правила замены не могу просечь
 
Кто разобрался, какая тут закономерность?
у меня ничего не выходит
например только решил, что валидные только те, которые содержат 0,1 и 2, но одна тройка затесалась
плюс правила замены не могу просечь

Ну по сути, там где идет 0, должна быть замена на рядом стоящее или же перед или же после, но только если будет одинаковые после замены 3 числа.

то есть к примеру 06012 - должно стать 66612, то есть это бы по условию выглядело бы так:

PHP:
//01023 = 11123
 if ($i1 == 0 && $i3 == 0 && $i2 <> 7) {
     $i1 = $i2;
     $i3 = $i2;
}

То есть условиями описать задачу можно, но их будет очень много, потому что совпадений 0, может быть разное количество, по этому все комбинации перебирать будет просто тонна кода...
 
почему тогда '07720', // не валидно ?
заменяем ноль, получаем три семерки, как в '10120', // 11120

прежде чем условия писать, их надо сначала сформулировать
а с этим у тебя проблема. а не с "тоннами".
 
интересно, это он однорукого бандита что ли ваяет?
 
интересно, это он однорукого бандита что ли ваяет?
Угу, выигрышные комбинации с вайлд символами. Если вопрос про правила: 3+ с любого края, вайлд может заменить символ в комбинации.
 
почему тогда '07720', // не валидно ?
заменяем ноль, получаем три семерки, как в '10120', // 11120

прежде чем условия писать, их надо сначала сформулировать
а с этим у тебя проблема. а не с "тоннами".

например некоторые числа просто не допустимы, для замены, просто как пример сделал.

помочь то можете или нет?
 
это ж надо до чего игровая индустрия докатилась
вот это вот нанимают, бессловесное создание
 
Интересно, убытки на кого будут списывать?
Там же ведь будет дыра на дыре и дырой погонять - заходи кто хочешь, бери что хочешь.
 
Это не игра.
Это банально нужно, чтобы смотреть какие числа проходят а какие нет.
Но писать тонну условий не охото.

По этому обратился за советом, как лучше сделать, а вы начали сами себе проблему создавать и в ходе сказку сочинять про однорукого бандита.
Если бы была игра я бы так и сказал, делаю то-то и то-то.

Господи! Было бы еще что скрывать!

Угу, выигрышные комбинации с вайлд символами. Если вопрос про правила: 3+ с любого края, вайлд может заменить символ в комбинации.

Уже интереснее, а где это можно посмотреть что-ли?
 
ТС, последнее китайское. Будешь агриться, уедешь в бан. Тебе непрозрачно намекнули на необходимость ЯСНО и ДОХОДЧИВО объяснить нам как ты отличаешь валидируемые данные, по какому критерию.
 
Да он не агрится, он честно про себя рассказал. Для знакомства видимо.
Можно было и оставить.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху