Имя: Пароль:
LIFE
Жизнь форума
OFF: Задача про 3 числа...
,
0 Said_We
 
09.12.22
13:29
Пятница....
Необходимо отгадать трехзначное число. В котором цифры в числе не повторяются.
Предварительно было совершено несколько попыток:

196 результат 1:0
463 результат 1:0
951 результат 2:1
738 результат 1:0

где 1:0 означает что одно число угадано и ноль на месте, 2:1 - два числа угаданы и одно на месте.
1 mikecool
 
09.12.22
13:33
быки-коровы на марше )
2 PR
 
09.12.22
13:33
Не число угадано, а цифра
3 Said_We
 
09.12.22
13:33
(1) Там четыре числа. :-)
4 mikecool
 
09.12.22
13:33
(0) в попытках нет ошибки?
5 Said_We
 
09.12.22
13:34
(2) Да... Но я думаю все поймут.
6 mikecool
 
09.12.22
13:34
593?
7 PR
 
09.12.22
13:34
(5) bolobol не поймет
8 PR
 
09.12.22
13:35
(6) Во втором результате противоречие
9 Said_We
 
09.12.22
13:35
(6) Если 593, то в попытке 463 дало бы в 1:1, а там 1:0.
10 mikecool
 
09.12.22
13:36
(9) 359 или 395
11 PR
 
09.12.22
13:37
(10) 359
395 не подходит
12 Said_We
 
09.12.22
13:37
(11) УГУ
13 YFedor
 
09.12.22
13:37
Что такое "одно на месте"?
14 mikecool
 
09.12.22
13:37
(11) да 359, пересчитал )
15 PR
 
09.12.22
13:37
(13) О, я же говорил
16 Оболтус
 
09.12.22
13:38
658
17 CaptanG
 
09.12.22
13:39
541 или 359
18 vdementiev
 
09.12.22
13:39
359, однако ...
19 CaptanG
 
09.12.22
13:40
А не 541 не подходит остается 359
20 PR
 
09.12.22
13:41
(16) (17) Как вы находите неправильные варианты?
Они же не проходят проверку
21 Said_We
 
09.12.22
13:43
(20) Такое бывает. Внимательность подводит. По правилам игры в Быки-Коровы кто ошибся в сообщении результата, тот проиграл. Но такое случается. Цифр в числе 4, а не три - сложнее.
22 Оболтус
 
09.12.22
13:44
(16)А, не. 359 вроде )
23 1Сергей
 
09.12.22
14:06
541
24 1Сергей
 
09.12.22
14:08
(23) вижу, не подходит. соррян
25 1Сергей
 
09.12.22
14:09
видимо, только 359
26 1Сергей
 
09.12.22
14:30
Решение

1)
463 результат 1:0
951 результат 2:1

т.к. цифры не повторяются, а в первом случае есть одно совпадение, а втором два, то в искомом числе возможны цифры только из списка: 1,3,4,5,6,9
Сразу отметаем 0,2,7,8

2)
738 результат 1:0
7 и 8 нет, значит в искомом числе точно есть 3

3)
463 результат 1:0
Мы знаем что точно есть 3, а тут одно совпадение, значит точно нет 4 и 6. Возможны 2 цифры только из списка: 1,5,9 и точно есть 3

4)
196 результат 1:0
В данной проверке есть 1 и 9, а результат одно совпадение, значит в иском числе может быть либо 1, либо 9. Но не вместе 1 и 9
а т.к. у нас точно есть 2 цифры из 1,5,9, значит точно есть 5

5)
463 результат 1:0
738 результат 1:0
т.к. на втором и третьем месте тройки совпадения по позиции нет, значит тройка точно на первом месте. 3ХХ
Остаются варианты:
351
359
395
315

6)
951 результат 2:1
не подходит 351, иначе был бы результат 2:2
не подходит 395, иначе был бы результат 2:0
не подходит 315, иначе был бы результат 2:0

7)
Остается один возможный вариант
359
27 Kassern
 
09.12.22
14:37
(26) когда вы успеваете работать?)
28 mikecool
 
09.12.22
15:18
(26) это ты для @balabol ?
29 bolobol
 
09.12.22
16:04
(28) Я не вдумывался, думать - это не моё)), но описание решение логической задачи - на пять с плюсом!
30 bolobol
 
09.12.22
16:04
Интересно, если ли математическое решение...
31 bolobol
 
09.12.22
16:10
(21) Помнится, что любая партия быки-коровы решается за 8 ходов, если начинать с комбинаций 1234, 5678, 90??
32 Грю
 
09.12.22
16:33
(0) 359 ?
33 Said_We
 
09.12.22
18:03
(31) Или с первого числа :-)
34 bolobol
 
09.12.22
18:28
(33) ...какого месяца?
35 Said_We
 
09.12.22
18:39
(34) Вы же поняли о чем я. :-)
Нельзя быть таким, извините за формулировку - занудливым. Как говорил наш полковник - "Будьте проще и люди к вам потянуться".
Дайте шанс людям ошибаться.
36 bolobol
 
09.12.22
18:47
(35) Я не понял о чём вы ни в (33), ни в (35). Но если юмор - это не Ваше, то прямо спрошу: - что имелось в виду в (33) ?
37 bolobol
 
09.12.22
18:56
Хотя, чего-то действительно важного ожидать не стоит, судя по тому, что к (2) Вы не прислушались, и явно в (33) такая же ситуация: "я думаю все поймут". Закроем вопрос))
38 Said_We
 
09.12.22
21:17
(37) А ответ на (2) в (5) вам по фигу? :-) Лишь бы по возмущаться. :-) Как вам сложно жить... :-)
39 ДедМорроз
 
09.12.22
22:07
Function Compare(i1,i2,i3,j1,j2,j3):
Hi=0
If i1==j1 or i1==j2 or i1==j3:
  Hi=Hi+1
If i2==j1 or i2==j2 or i2==j3:
  Hi=Hi+1
If i3==j1 or i3==j2 or i3==j3:
  Hi=Hi+1
Lo=0
If i1==j1:
  Lo=Lo+1
If i2==j2:
  Lo=Lo+1
If i3==j3:
  Lo=Lo+1
Return Hi*10+Lo
End

For i=100 to 999:
Qd1=i%10
j=(i-d1)/10
d2=j%10
j=(j-d2)/10
d3=j%10
If ď1!=d2 and d1!=d3 and ď2!=d3:
  If Compare(d1,d2,d3,1,9,6)==10:
   If Compare(d1,d2,d3,4,6,3)==10:
    If Compare(d1,ď2,d3,9,5,1)==20:
     If Compare(d1,d2,d3,7,3,8)==10:
      Out d1,ď2,ď3
Next
40 Said_We
 
10.12.22
02:47
(39) Там 2:1, а не 2:0. Вот это условие поправить надо "If Compare(d1,ď2,d3,9,5,1)==20".
Но по сути да - простая генерация всех вариантов и отбрасывание не нужных.
41 Garykom
 
гуру
10.12.22
05:48
351
42 Garykom
 
гуру
10.12.22
05:49
(41) *359 т.е.
43 Грю
 
11.12.22
03:34
Решение на JS:


const input = `
    196 результат 1:0
    463 результат 1:0
    951 результат 2:1
    738 результат 1:0
`;

const parsed = input
    .split('\n')
    .map(row => row.trim())
    .filter(Boolean)
    .map(row => row.split(' результат '))
    .map(row => [ row[0], ...row[1].split(':') ])
    .map(([ number, cows, bulls ]) => ({ digits: String(number).split(''), bulls: Number(bulls), cows: Number(cows) }));

[ ...Array(1000) ].map((_, number) => {
        const digitsToTest = String(number).padStart(3, '0').split('');

        const found = parsed.map(inputRow => {
            const bullsCows = inputRow.digits.reduce((acc, inputDigit, index) => {
                const isBull = digitsToTest[index] === inputDigit;
                const isCow = digitsToTest.includes(inputDigit);
                return { cows: acc.cows + (isCow ? 1 : 0), bulls: acc.bulls + (isBull ? 1 : 0) }
            }, { cows: 0, bulls: 0 });

            return bullsCows.bulls === inputRow.bulls && bullsCows.cows === inputRow.cows;

        });

        return { found, number };
    },
).filter(item => item.found.every(_ => _)).map(item => item.number);


Результат: [359]
44 Прохожий
 
11.12.22
12:59
359.
Где голосовалка?