Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > ger.ct > #669816 > unrolled thread

Kleines Rätsel

Started byBonita Montero <Bonita.Montero@gmail.com>
First post2026-07-29 17:24 +0200
Last post2026-07-30 12:15 +0200
Articles 6 — 3 participants

Back to article view | Back to ger.ct


Contents

  Kleines Rätsel Bonita Montero <Bonita.Montero@gmail.com> - 2026-07-29 17:24 +0200
    Re: Kleines Rätsel Ruediger Lahl <ruediger.lahl@gmx.de> - 2026-07-29 18:45 +0200
      Re: Kleines Rätsel Bonita Montero <Bonita.Montero@gmail.com> - 2026-07-29 19:06 +0200
        Re: Kleines Rätsel "F. W." <me@home.invalid> - 2026-07-30 07:14 +0200
        Re: Kleines Rätsel Ruediger Lahl <ruediger.lahl@gmx.de> - 2026-07-30 08:47 +0200
          Re: Kleines Rätsel Bonita Montero <Bonita.Montero@gmail.com> - 2026-07-30 12:15 +0200

#669816 — Kleines Rätsel

FromBonita Montero <Bonita.Montero@gmail.com>
Date2026-07-29 17:24 +0200
SubjectKleines Rätsel
Message-ID<114d5uu$vfev$1@raubtier-asyl.eternal-september.org>
Gesucht ist ein Programm das feststellt wie viele Wege zu einem
für eine Seite erfolgreichen oder unentschiedenem Spielende es
bei Tic Tac Toe gibt. Mir ist das Ganze heute morgen durch den
Kopf gegangen und ich habe schnell eine Lösung gehabt, aber das
Ganze dann immer wieder hin und her vereinfacht, dass ich ins-
gesamt ca. vier Stunden dran gesessen hab.

[toc] | [next] | [standalone]


#669819

FromRuediger Lahl <ruediger.lahl@gmx.de>
Date2026-07-29 18:45 +0200
Message-ID<114dhnm.ctk.1@privat.lahls.de>
In reply to#669816
*Bonita Montero* schrieb:

> Gesucht ist ein Programm das feststellt wie viele Wege zu einem
> für eine Seite erfolgreichen oder unentschiedenem Spielende es
> bei Tic Tac Toe gibt.

Eine geradezu ideale Frage für die KI deines geringsten Misstrauens. Ich
habs Copilt vorgeworfen und er hat ausführlich geantwortet.
-- 
bis denne (551)

[toc] | [prev] | [next] | [standalone]


#669821

FromBonita Montero <Bonita.Montero@gmail.com>
Date2026-07-29 19:06 +0200
Message-ID<114dbve$11k9q$1@raubtier-asyl.eternal-september.org>
In reply to#669819
Am 29.07.2026 um 18:45 schrieb Ruediger Lahl:
> *Bonita Montero* schrieb:
> 
>> Gesucht ist ein Programm das feststellt wie viele Wege zu einem
>> für eine Seite erfolgreichen oder unentschiedenem Spielende es
>> bei Tic Tac Toe gibt.
> 
> Eine geradezu ideale Frage für die KI deines geringsten Misstrauens.
> Ich habs Copilt vorgeworfen und er hat ausführlich geantwortet.

Der hatte aber sicher keine so elegante Lösung wie ich:

#include <iostream>
#include <array>

using namespace std;

int main()
{
	constexpr int8_t Free = -3;
	array<array<int8_t, 3>, 3> board;
	board.fill( array<int8_t, 3> { Free, Free, Free } );
	unsigned undecided = 0, wins = 0;
	auto recurse = [&]( this auto &self, int8_t colour ) noexcept -> void
	{
		bool full = true;
		for( size_t row = 3; row--; )
			for( size_t col = 3; col--; )
				if( int8_t &coin = board[row][col]; coin == Free )
				{
					full = false;
					coin = colour;
					int needed = colour ? 3 : 0;
					bool won = (board[row][0] + board[row][1] + board[row][2]) == needed
							|| (board[0][col] + board[1][col] + board[2][col]) == needed;
					if( int mid = board[1][1]; !won && (row == col || row + col == 2) )
						won = (board[0][0] + mid + board[2][2]) == needed
							|| (board[0][2] + mid + board[2][0]) == needed;
					if( !won )
						self( colour ? 0 : 1 );
					else
						++wins;
					coin = Free;
				}
		undecided += full;
	};
	recurse( false );
	cout << "wins:      " << 2 * wins << endl;
	cout << "undecided: " << 2 * undecided << endl;
}

[toc] | [prev] | [next] | [standalone]


#669850

From"F. W." <me@home.invalid>
Date2026-07-30 07:14 +0200
Message-ID<nd04ubF2fvlU4@mid.individual.net>
In reply to#669821
Am 29.07.2026 um 19:06 schrieb Bonita Montero:

Hier eine verständliche Pascal-Version ;-) :

Hier ist die 1:1-Übersetzung in moderneres Pascal (Free Pascal / 
Delphi). Die rekursive C++23-Lambda-Funktion wurde sauber als 
verschachtelte Prozedur übersetzt.

program TicTacToeRecursion;

{$mode objfpc}{$H+}{$J-} // Für Free Pascal

uses
   SysUtils;

const
   FreeCell: ShortInt = -3;

var
   board: array[0..2, 0..2] of ShortInt;
   undecided, wins: Cardinal;
   row, col: Integer;

   procedure Recurse(colour: ShortInt);
   var
     full, won: Boolean;
     row, col: Integer;
     needed, mid: Integer;
   begin
     full := True;

     for row := 2 downto 0 do
     begin
       for col := 2 downto 0 do
       begin
         if board[row, col] = FreeCell then
         begin
           full := False;
           board[row, col] := colour;

           if colour <> 0 then
             needed := 3
           else
             needed := 0;

           won := ((board[row, 0] + board[row, 1] + board[row, 2]) = 
needed) or
                  ((board[0, col] + board[1, col] + board[2, col]) = 
needed);

           mid := board[1, 1];
           if (not won) and ((row = col) or (row + col = 2)) then
           begin
             won := ((board[0, 0] + mid + board[2, 2]) = needed) or
                    ((board[0, 2] + mid + board[2, 0]) = needed);
           end;

           if not won then
           begin
             if colour <> 0 then
               Recurse(0)
             else
               Recurse(1);
           end
           else
           begin
             Inc(wins);
           end;

           board[row, col] := FreeCell;
         end;
       end;
     end;

     if full then
       Inc(undecided);
   end;

begin
   // Board initialisieren
   for row := 0 to 2 do
     for col := 0 to 2 do
       board[row, col] := FreeCell;

   undecided := 0;
   wins := 0;

   Recurse(0); // 0 entspricht 'false' im C++-Code

   WriteLn('wins:      ', 2 * wins);
   WriteLn('undecided: ', 2 * undecided);
end.

```
FW

[toc] | [prev] | [next] | [standalone]


#669872

FromRuediger Lahl <ruediger.lahl@gmx.de>
Date2026-07-30 08:47 +0200
Message-ID<114f33p.11s.1@privat.lahls.de>
In reply to#669821
*Bonita Montero* schrieb:

> Am 29.07.2026 um 18:45 schrieb Ruediger Lahl:
>> *Bonita Montero* schrieb:
>>> Gesucht ist ein Programm das feststellt wie viele Wege zu einem
>>> für eine Seite erfolgreichen oder unentschiedenem Spielende es
>>> bei Tic Tac Toe gibt.
>>
>> Eine geradezu ideale Frage für die KI deines geringsten Misstrauens.
>> Ich habs Copilt vorgeworfen und er hat ausführlich geantwortet.
>
> Der hatte aber sicher keine so elegante Lösung wie ich:

Gib deine im OP geschriebene Forderung bei Copilot ein und schaue es dir
selbst an.
-- 
bis denne (550)

[toc] | [prev] | [next] | [standalone]


#669881

FromBonita Montero <Bonita.Montero@gmail.com>
Date2026-07-30 12:15 +0200
Message-ID<114f87b$1m1b3$1@raubtier-asyl.eternal-september.org>
In reply to#669872
Am 30.07.2026 um 08:47 schrieb Ruediger Lahl:

> Gib deine im OP geschriebene Forderung bei Copilot ein und schaue es dir
> selbst an.

Ich habs mit Claude gemacht, und wie immer kommt nur eine Standard-
lösung raus. Kreativität hat wohl in dem Bereich noch keine KI.

[toc] | [prev] | [standalone]


Back to top | Article view | ger.ct


csiph-web