2024-08-31
Быки и коровы
2024-08-31 14:30В качестве субботнего развлечения сваял простейшую игру "быки и коровы" на Си. На самом деле перепёр с Бейсика. Исходник здесь: bulls-and-cows.c. Сыграем:
Для математиков: в этой статье имеется серьёзная теоретическая проработка.
$ cc -O bulls-and-cows.c -o bulls-and-cowsСамому думать лень, проще задействовать решатель из интернета: kuniga.me/bulls_and_cows/
$ ./bulls-and-cows
Guess a number.
3210
You scored 0 bulls and 1 cows.
Guess a number.
6541
You scored 1 bulls and 1 cows.
Guess a number.
6187
You scored 0 bulls and 0 cows.
Guess a number.
9534
You scored 1 bulls and 2 cows.
Guess a number.
4592
You scored 4 bulls and 0 cows.
Correct. That took you 5 guesses.
Теперь осталось на Алгол 60 переписать. Хочется иметь простую интерактивную игрушку на Алголе в качестве демо.A Bulls and Cows Solver
If you are not familiar with this game, check this Wikipedia article.
How to use the solver. Think of a 4-digit number with no repeated digits. Then choose the outcome (x, y) in the dropdown below, where x is the number of digits the solver got right AND in the right position (bulls), and y be the number of digits it got right but in the wrong position (cows).
If you are interested in the implementation of the solver, check our blog post.
Guessed: [3,2,1,0], result: (0, 1)
Guessed: [6,5,4,1], result: (1, 1)
Guessed: [6,1,8,7], result: (0, 0)
Guessed: [9,5,3,4], result: (1, 2)
Guessed: [4,5,9,2], result: (4, 0)
Solved! The secret is: [4,5,9,2]
Для математиков: в этой статье имеется серьёзная теоретическая проработка.
Видео, как перемещается коллективный путин по своей стране. Полсотни автомобилей с мигалками, а с воздуха прикрывают два боевых вертолета. И вовсе не украинцев они боятся, как я догадываюсь.
Понадобился мне тут простейший псевдо-случайный генератор. Захожу на gemini.google.com, спрашиваю.
Hi Gemini,Даёт вполне вразумительный код, но мне нужно в вещественных числах.
Please show me a simple C++ implementation of a Lehmer pseudo random generator.
Can you please modify it to return real values in range [0, 1)?Получаю приемлемое решение:
Что ни говорите, а от искусственного интеллекта есть польза в домашнем хозяйстве.#include <cstdint>
class LehmerRNG {
public:
LehmerRNG(uint64_t seed = 0xdeadbeef) : state(seed) {}
double generate() {
state = state * 6364136223846793005ULL + 1;
return static_cast<double>(state) / (static_cast<double>(UINT64_MAX) + 1);
}
private:
uint64_t state;
};