Pull to refresh

Угадай число: 1-строчный алгоритм изучения c# & qbasic

Reading time3 min
Views3.9K

Несколько месяцев назад читая иностранный форум и увидев соревнование: создать программу "угадай число" покороче я обогнал иностранцев 1-м создав 1-строчный алгоритм "guess number" на 2-х языках


1 IF Russia = 0 THEN Russia = 2222: RANDOMIZE TIMER: num = INT(RND * 100) + 1: GOTO 1 ELSE IF Russia <> 0 THEN INPUT n: IF n < num THEN PRINT «MORE»: GOTO 1 ELSE IF n > num THEN PRINT «less»: GOTO 1 ELSE IF n = num THEN PRINT «da»: END ELSE GOTO 1 'DANILIN Russia 9-9-2019 guessnum.bas

image
using System; using System.Text;namespace GURU { class Program { static void Main(string[] args) { Random rand = new Random(); int Russia = 0; int n = 0; int num = 0; dav: if(Russia == 0) {Russia = 2222; num = rand.Next(100)+1; goto dav; }else if (Russia != 0) {Console.Write("? "); n = Convert.ToInt32(Console.ReadLine());} if (n < num) { Console.WriteLine(«MORE»); goto dav;}else if (n > num) { Console.WriteLine(«less»); goto dav;}else if (n == num) {Console.Write(«da»); Console.ReadKey(); }else goto dav;}}}// DANILIN Russia 9-9-2019 guessnum.cs

Размещаю оригиналы и надеюсь читатели сочинят свои программы строго 1-строчные на других языках программирования


Программа Milliard.cs угадывает число до 10^9 за логарифмическое время


https://ideone.com/IUi0ga


       //milliard.cs
    using System;
    using System.Text;
    namespace DAV 
    { class Program
     { static void Main(string[] args) 
     { int h2 = 1000000000;//or 500
    int h1 = 0; int t = 0;
    Random rand = new Random();
    int c = rand.Next(h2); //computer
    int h = rand.Next(h2); //human or h2/2; 

    dav: 
    t++;
    Console.WriteLine(); Console.Write(t);
    Console.Write("  "); Console.Write(c);
    Console.Write("  "); Console.Write(h);
    Console.Write("  ");

    if(h < c)
     { Console.Write("MORE");
     int a=h; h=(h+h2)/2; h1=a; goto dav;
     }
    else if(h > c)
     { Console.Write("less");
     int a=h; h=(h1+h)/2; h2=a; goto dav;
     }
    Console.Write("win by "); Console.Write(t);
    Console.Write(" steps"); Console.ReadKey();
    }}}

Мой стиль qbasic bas & c# cs:


1-я строка имя файла
комментарии смещены вправо отдельно от строк ниже
фигурная скобка открывающаяся: в начале строки
фигурная скобка закрывающиеся: подряд несколько
спец форматирование вывода на экран не использую
однотипные команды: несколько в 1-й строке как qbasic
многие мои программы проверяемые онлайн
многие мои программы данные импортируют и экспортируют


Многие мои программы применяют строки программы
Русская Сортировка Половинами обучающей программированию




Результат:

1 18122453 320244676 less
2 18122453 160122338 less
3 18122453 80061169 less
4 18122453 40030584 less
5 18122453 20015292 less
6 18122453 10007646 MORE
7 18122453 15011469 MORE
8 18122453 17513380 MORE
9 18122453 18764336 less
10 18122453 18138858 less
11 18122453 17826119 MORE
12 18122453 17982488 MORE
13 18122453 18060673 MORE
14 18122453 18099765 MORE
15 18122453 18119311 MORE
16 18122453 18129084 less
17 18122453 18124197 less
18 18122453 18121754 MORE
19 18122453 18122975 less
20 18122453 18122364 MORE
21 18122453 18122669 less
22 18122453 18122516 less
23 18122453 18122440 MORE
24 18122453 18122478 less
25 18122453 18122459 less
26 18122453 18122449 MORE


27 18122453 18122454 less
28 18122453 18122451 MORE
29 18122453 18122452 MORE
30 18122453 18122453 win by 30 steps


Число шагов проверяем в Эксцель Excel:


=log(10^9;2)
=29,89
=30


Что и требовалось доказать. Нобелевская премия сама себя не получит.




Главный результат: программы qbasic возможно перевести в c#


http://rosettacode.org/wiki/Guess_the_number

Tags:
Hubs:
-10
Comments22

Articles