QBasic, тест на интеллект.

geh
Сообщений: 224
Зарегистрирован: 09 дек 2013, 21:00

QBasic, тест на интеллект.

Сообщение geh » 28 дек 2013, 10:56

Эта программа в игровой форме легко определит
зачем вам голова: для шапки или ...
Программа работает так: она загадывает трехзначное число, все цифры, которого
различны. Нуль приравнен к остальным цифрам, то есть может стоять впереди.
программа запрашивает вас ввести свое число. Вы вводите. Она выдает вам информацию
об этом числе в виде: A=2 B=1, что означает, что в данном числе, которое вы ввели, есть
две правильные цифры, причем одна из них стоит на своём месте. Конкретный пример:
программа загадала число 012, а вы ввели 021. Программа выдаст информацию A=3 B=1
что означает: вы ввели все три верные цифры, но лишь одно из них на своём месте. Если
вы определите число за 8 ходов, то программа скажет вам комплимент.

вот программа

Код: Выбрать все

DEFINT A-C, I
CLS
RANDOMIZE TIMER
c1=FIX(10*RND(1))
100:
c2=FIX(10*RND(2))
IF c2=c1 THEN 100
200:
c3=FIX(10*RND(3))
IF (c3=c1) OR (c3=c2) THEN 200

FOR i=1 TO 8
   a=0: b=0
   PRINT "Введите трехзначное число"
   INPUT c0
   c03=c0 MOD 10
   c02=(c0-c03)/10 MOD 10
   c01=FIX(c0/100)
   IF (c01=c1) OR (c01=c2) OR (c01=c3) THEN a=a+1
   IF (c02=c1) OR (c02=c2) OR (c02=c3) THEN a=a+1
   IF (c03=c1) OR (c03=c2) OR (c03=c3) THEN a=a+1
   IF c01=c1 THEN b=b+1
   IF c02=c1 THEN b=b+1
   IF c03=c1 THEN b=b+1
   PRINT "A=";a;"B=";b
   IF b=3 THEN 300
NEXT i
PRINT "Выше голову! Ум дело наживное!!"
STOP
300:
PRINT Вы УМНЫЙ человек!!!!"
STOP
END
Последний раз редактировалось geh 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Рубен
Сообщений: 5756
Зарегистрирован: 04 май 2010, 21:00

QBasic, тест на интеллект.

Сообщение Рубен » 28 дек 2013, 11:12

geh писал(а):Source of the post что означает: вы ввели все три верные цифры, но лишь одно из них на своём месте. Если
вы определите число за 8 ходов, то программа скажет вам комплимент.
Сколько понадобиться ходов, чтобы подобрать хотя бы правильную тройку чисел, не говоря о её упорядоченности в самом плохом случае (если "не везет"). Сомневаюсь, что их 8.

"Выше голову! Ум дело наживное!!"
Это хамство
Последний раз редактировалось Рубен 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
kiv
Сообщений: 1012
Зарегистрирован: 02 дек 2011, 21:00

QBasic, тест на интеллект.

Сообщение kiv » 28 дек 2013, 13:45

Рубен писал(а):Source of the post
Сколько понадобиться ходов, чтобы подобрать хотя бы правильную тройку чисел, не говоря о её упорядоченности в самом плохом случае (если "не везет"). Сомневаюсь, что их 8.


Блин, искал, но не нашел - я решалку к этой игре когда-то писал.
Это ж почти "Быки и коровы" из детства
Я когда-то писал программку, которая отгадывала для четырехзначных чисел - так вот, она делала это на удивление быстро... Принцип был в том, что выбрасывались все варианты, которые не проходят, и пытался подобрать вопрос, который бы выбрасывал как можно больше вариантов из оставшихся.

Повторить, что ли?...
Последний раз редактировалось kiv 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
kiv
Сообщений: 1012
Зарегистрирован: 02 дек 2011, 21:00

QBasic, тест на интеллект.

Сообщение kiv » 28 дек 2013, 15:12

Набросал, только без допэвристики - просто в качестве пробника берется наименьшее из оставшихся допустимых чисел. Получается для 3, 4 и 5 цифр - 8 попыток достаточно (на девятой гарантированно говорится точное значение). Дальше не проверял :), но, похоже , 8 попыток - универсальное число.

geh, это так?
Последний раз редактировалось kiv 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

geh
Сообщений: 224
Зарегистрирован: 09 дек 2013, 21:00

QBasic, тест на интеллект.

Сообщение geh » 28 дек 2013, 15:27

Еще раз хочу пояснить правила на конкретном примере и показать
начало правильной игры. Предположим, что компьютер загадал
число 369. (специально рассматривается самый худший вариант).
Мы не знаем, что загадал компьютер и мы должны вводить первые
три числа так, чтобы охватить все девять цифр, то есть например
числа 123, 456, 789 компьютер выдаст на них следующую информацию
A=1 B=0;A=1 B=0;A=1 B=1. Итак мы видим, что в каждом из трех чисел
есть искомая цифра ( цифру 0 можно не рассматривать, но если бы в
заданных числах было только две искомые цифры, то мы могли бы сразу
сказать, что и 0 искомая цифра - это более простой вариант). Но пойдем
дальше мы должны извлечь нужные нам цифры. Как? Возьмем к примеру уже
заданное первым наше число 123. 3 заменим на 4 и предложим компьютеру число
124. В худшем случае нам ничего не добавится, то есть компьютер сообщит лишь
о наличии одной верной цифры. ( в лучшем случае двух или ни одной!!). Тогда
предложим компьютеру число 125 (то есть первые две цифры мы не трогаем).
Опять рассматриваем худший случай, то есть в числе одна верная цифра! Но у нас
голова не для шапки, легко понять, что искомая цифра 6!! Теперь в начальном числе
мы должны заменить сразу две цифры. Какие? Мы знаем, что 3 тоже искомая цифра и
мы ее оставим, в противном случае мы бы ее просто выкинули. Кроме того нам уже известно,
что 3 и 6 стоят не на своём месте (запомните это важно!). Рассмотрим далее худший случай
мы предлагаем компьютеру число 637 (это худший случай указывает, что 6 стоит на втором
месте, а 3 на первом!!). Так кто стоит на последнем месте? Конечно 9 и 8-ми ходов вполне
достаточно, чтобы справиться с тестом! Конечно круто, ни одного запасного хода!!
примечание:
да, тут было верно сказано, что
подобная программа есть и для
четырехзначных чисел. Я добавлю
и для 5-ти и 6-тизначных чисел.
Последний раз редактировалось geh 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
kiv
Сообщений: 1012
Зарегистрирован: 02 дек 2011, 21:00

QBasic, тест на интеллект.

Сообщение kiv » 28 дек 2013, 15:34

geh писал(а):Source of the post


Да это все понятно, просто я написал отгадывалку. Она отгадывает любое загаданное число максимум за 8 попыток. Это справедливо и для 3, и для 4, и для 5-значных чисел.

Вот меня и заинтересовало - это что, какой-то теоретический предел или нет?
Последний раз редактировалось kiv 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

geh
Сообщений: 224
Зарегистрирован: 09 дек 2013, 21:00

QBasic, тест на интеллект.

Сообщение geh » 28 дек 2013, 16:39

Довольно трудно так сразу сказать. Я попробовал для
10-тизначных чисел, используя группу подстановок, но
пока не решил. Тут надо подумать.
Последний раз редактировалось geh 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
kiv
Сообщений: 1012
Зарегистрирован: 02 дек 2011, 21:00

QBasic, тест на интеллект.

Сообщение kiv » 28 дек 2013, 17:01

geh писал(а):Source of the post
Довольно трудно так сразу сказать. Я попробовал для
10-тизначных чисел, используя группу подстановок, но
пока не решил. Тут надо подумать.


Для 6 этот метод срабатывает за 12 попыток...
Последний раз редактировалось kiv 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

ARRY
Сообщений: 1529
Зарегистрирован: 10 авг 2013, 21:00

QBasic, тест на интеллект.

Сообщение ARRY » 28 дек 2013, 18:31

kiv писал(а):Source of the post
Это ж почти "Быки и коровы" из детства

Да не почти, а в точности "Быки и коровы". Для 4-хзначных чисел.
Последний раз редактировалось ARRY 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test

Аватар пользователя
Ian
Сообщений: 5455
Зарегистрирован: 28 июл 2009, 21:00

QBasic, тест на интеллект.

Сообщение Ian » 28 дек 2013, 19:52

Ответ = комбинации двух расстояний :Хэмминга $$d_1$$ и нечто типа Левенштейна $$d_2$$-расстояния между неупорядоченными наборами, можно составить их десятичную комбинацию $$10d_1+d_2$$ и считать ответом ее.
Обладает всеми свойствами метрики.
А дальше есть у военных, алгоритмы "как эти штаты уж разбиты на квадраты"
Последний раз редактировалось Ian 28 ноя 2019, 06:37, всего редактировалось 1 раз.
Причина: test


Вернуться в «Computer Science»

Кто сейчас на форуме

Количество пользователей, которые сейчас просматривают этот форум: нет зарегистрированных пользователей и 0 гостей