Knobelspaß - Der Kreisring

Übersicht Sonstiges Smalltalk

Gehe zu Seite 1, 2, 3, 4, 5  Weiter

Neue Antwort erstellen

SpionAtom

Betreff: Knobelspaß - Der Kreisring

BeitragSa, Okt 12, 2013 0:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Kreisring

user posted image

Ein Kreisring ist die Fläche, die von zwei konzentrischen Kreisen eingeschlossen wird. Im Bild ist der Kreisring rot dargestellt.
Die einzige Größenangabe, die gegeben ist, ist eine Strecke, die auf der Tangente des inneren Kreises liegt und vom äußeren Kreis begrenzt wird - im Bild grün.

Gegeben ist die Länge der grünen Strecke: Diese sei 8 [Einheiten]

Frage: Wie groß ist der Flächeninhalt des Kreisrings (, der roten Fläche)?

Viel Spaß!



Alle Knobeleien im Überblick:
Der Kreisring
Die Prinzessin mit den vier Schlafgemächern
Verrückte Pilzkulturen
Uhrzeigerspaß
Ziffern im Buch
Ziffern eintragen
Geometrierätsel: Radius bestimmen 2
Geometrierätsel: Radius bestimmen 1
8 Geschenke
Wieviele perfekte Snakespiele?
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
  • Zuletzt bearbeitet von SpionAtom am Di, Jul 04, 2017 15:54, insgesamt 21-mal bearbeitet

SpionAtom

Betreff: Wieviele perfekte Snakespiele?

BeitragSa, Okt 12, 2013 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieviele perfekte Snakespiele?

Das Spiel Snake kennt hoffentlich jeder hier.
Und zu diesem Spiel kam mir die Frage, wieviele mögliche Schlangenpositionen es gibt, um das Spielfeld komplett auszufüllen. Um den Rahmen nicht zu sprengen, lege ich hier die Regeln für meine Snakevariante fest:
- Das Spiel ist 10x10 Felder groß
- Die Schlange kann sich nur horizontal oder vertikal ausbreiten
- Die Schlange beginnt immer oben links (danach kann sie sich entweder nach rechts oder nach unten ausweiten)
- Die Schlange kann nicht aus einem Spielfeldrand raus und auf der anderen Seite wieder herein
- Ein perfektes Snakespiel ist genau dann erreicht, wenn die Schlange alle Felder (100 Stück) belegt hat

Hier zwei Beispiele eines perfekten Snakespiels (allerdings mit einem 5x5 Feld):
user posted image


Ich selbst kenne die Lösung noch nicht. Ihr dürft eure Lösung aber kundtun (gerne mit Bearbeitungszeit +evtl. Programmlaufzeit)

Fragen zur Aufgabe oder zum Ablauf dürft ihr natürlich auch jederzeit stellen.

Viel Spaß beim Knobeln!

Bin gespannt, wer die eleganteste Lösung findet
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
  • Zuletzt bearbeitet von SpionAtom am Do, Jul 06, 2017 16:38, insgesamt 2-mal bearbeitet

Chrise

BeitragSa, Okt 12, 2013 22:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hatte letztens ähnliches Denkproblem, was mir auch Kopfzerbrechen bereitet hat. Das Problem besteht auch immernoch, werde mich auch mal damit auseinandersetzen Smile

EDIT: bei meinen ersten Versuchen hab ich folgendes festgestellt: Bei einem Feld von 5x5 konnte ich wie bei einem Schachfeld nur jedes 2. Feld zu einem perfekten Ergebnis führen. Bei den möglichen Koordinaten für einen Startpunkt (0-4/0-4) konnte ich nur bei Koordinaten mit beiden werten geraden bzw. beiden ungeraden werten einen Erfolg erzielen.

man könnte auch sagen: (x%2)==(y%2) ist die Bedingung für ein erfolgreiches Snake. Wie dieses dann allerdings gemacht wird, weiß ich selbst noch nicht Confused

Bei einem 6x5 Feld sieht das Ganze schon wieder sehr anders aus. Da könnte ich bei (2/1),(3/1) und (2/3),(3/3) kein perfektes Spiel erzielen

lg Chrise
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

biggicekey

BeitragSa, Okt 12, 2013 23:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Meines Erachtens ist ein "perfektes Spiel" auf einem Feld mit ungerader Seitenlänge nicht möglich.
Klar gibt es x mögliche Varianten das Spielfeld mit einer Schlange zu füllen, damit man diese aber auch erreichen kann, muss es möglich sein die Strecke immer wieder abfahren zu können ohne in eine Sackgasse zu geraten. Das bedingt auch, dass die Schlange sich am Ende selbst in das Ende ihres Schwanzes beist. Damit fallen beide von dir skizzierte Varianten raus. Ich habe Snake immer so gespielt:
user posted image
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

Xeres

Moderator

BeitragSa, Okt 12, 2013 23:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Tatsache, dass Spion 2 Beispiele auf Spielfeldern mit ungerader Seitenzahl als Beispiele bringt, spricht dagegen, biggicekey.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Tobchen

BeitragSa, Okt 12, 2013 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Na, dann gebe ich mich mal vorerst geschlagen!
Jeder, der lieber für sich selbst drüber nachdenken möchte, anstatt zu fremden Lösungen beitragen oder selbst seine (Halb-)lösungen präsentieren zu wollen sollte 1) diesen Beitrag überspringen und 2) sich fragen, wieso er dann die Folgebeiträge nach dem ersten Beitrag liest...

Ich habe ein Brute Force Programm geschrieben, weil nachdenken langweilig ist.
Es geht vom Start aus in jede Richtung und von da aus in jede Richtung uuuund so weiter. Rekursion 101, wann immer es nicht weitergeht, wird geguckt, ob das Spielfeld komplett belegt ist und rechnet je nachdem ein perfektes Spiel drauf.
Dauert ewig, jops. Darum prüft es zwischendurch bestimmte Abbruchbedingungen:
user posted image
(Entsprechend natürlich symmetrisch und in andere Richtungen.) Wieso diese Abbruchbedingungen? Weil dadurch zwei Leerräume entstehen, von denen immer nur höchstens einer gefüllt werden kann.
Damit schafft es mein Java-Programm auf meinem Rechner in 21sek die Anzahl der Lösungen für das 7x7 Feld zu finden. 8x8 hat er nach 40min nicht hinbekommen und ich wollte es nicht weiterlaufen lassen, weil das regelmäßige Aufheulen meines Laptops mit auf den Sack ging.
Für weitere Abbruchbedingungsideen bin ich gerne offen.
Vielleicht geht das ganze nochmal schneller, wenn man möglichst lange geradeaus geht oder möglichst kurvig verfährt, aber das ist reine Spekulation und ich habe gerade keine Lust, das in mein Programm zu basteln.
Das Programm (nochmals: Java) findet sich hier:
Code: [AUSKLAPPEN]
package de.tobchen.snakomatic;

public class Snakomatic {
   private boolean[][] field;

   private static final int FROM_INIT = -1;
   private static final int FROM_UP = 0;
   private static final int FROM_DOWN = 1;
   private static final int FROM_LEFT = 2;
   private static final int FROM_RIGHT = 3;

   public static void main(String[] args) {
      // default field size
      int fieldSize = 5;

      // get field size from parameters if any is given
      if (args.length > 0) {
         fieldSize = Integer.parseInt(args[0]);
      }

      // call for snake-action, also: measure time
      Snakomatic snakomatic = new Snakomatic(fieldSize);
      long start = System.currentTimeMillis();
      long perfectCount = snakomatic.getPerfectCount();
      long time = System.currentTimeMillis() - start;

      // print result
      System.out.println("Perfects: " + perfectCount);
      System.out.println("Time: " + (time / 1000.0) + " sec");
   }

   public Snakomatic(int fieldSize) {
      // create field, empty it (necessary? no idea)
      field = new boolean[fieldSize][fieldSize];
      for (int x = 0; x < field.length; x++) {
         for (int y = 0; y < field[x].length; y++) {
            field[x][y] = false;
         }
      }
   }

   public long getPerfectCount() {
      return getPerfectCount(0, 0, FROM_INIT, false);
   }

   // GET THAT SNAKE ACTION ON
   private long getPerfectCount(int x, int y, int from, boolean pleaseCheck) {
      // counter for available directions
      int availDirections = 0;
      // counter of calculated perfect field takeover
      long perfectCount = 0;

      // mark spot as taken
      field[x][y] = true;

      // check if two empty "blobs" were created by seperation
      boolean areThereTwoBlobsAlsoCanYouPleaseGiveMeABetterName = false;
      switch (from) {
      case FROM_UP:
         if (!isFree(x, y + 1) && isFree(x - 1, y) && isFree(x + 1, y)) {
            areThereTwoBlobsAlsoCanYouPleaseGiveMeABetterName = true;
         }
         break;
      case FROM_DOWN:
         if (!isFree(x, y - 1) && isFree(x - 1, y) && isFree(x + 1, y)) {
            areThereTwoBlobsAlsoCanYouPleaseGiveMeABetterName = true;
         }
         break;
      case FROM_LEFT:
         if (!isFree(x + 1, y) && isFree(x, y - 1) && isFree(x, y + 1)) {
            areThereTwoBlobsAlsoCanYouPleaseGiveMeABetterName = true;
         }
         break;
      case FROM_RIGHT:
         if (!isFree(x - 1, y) && isFree(x, y - 1) && isFree(x, y + 1)) {
            areThereTwoBlobsAlsoCanYouPleaseGiveMeABetterName = true;
         }
         break;
      }
      if (pleaseCheck && (from == FROM_LEFT || from == FROM_RIGHT)) {
         if (!(isFree(x, y - 1) && isFree(x, y + 1))) {
            areThereTwoBlobsAlsoCanYouPleaseGiveMeABetterName = true;
         }
      }
      if (pleaseCheck && (from == FROM_UP || from == FROM_DOWN)) {
         if (!(isFree(x - 1, y) && isFree(x + 1, y))) {
            areThereTwoBlobsAlsoCanYouPleaseGiveMeABetterName = true;
         }
      }
      if (areThereTwoBlobsAlsoCanYouPleaseGiveMeABetterName && !isPerfect()) {

         field[x][y] = false;
         return 0;
      }

      // Go left
      if (isFree(x - 1, y)) {
         perfectCount += getPerfectCount(
               x - 1,
               y,
               FROM_RIGHT,
               (from == FROM_RIGHT && isFree(x, y - 1) && isFree(x, y + 1)));
         availDirections++;
      }
      // Go right
      if (isFree(x + 1, y)) {
         perfectCount += getPerfectCount(x + 1, y, FROM_LEFT,
               (from == FROM_LEFT && isFree(x, y - 1) && isFree(x, y + 1)));
         availDirections++;
      }
      // Go up
      if (isFree(x, y - 1)) {
         perfectCount += getPerfectCount(x, y - 1, FROM_DOWN,
               (from == FROM_DOWN && isFree(x - 1, y) && isFree(x + 1, y)));
         availDirections++;
      }
      // Go down (lolz, "go down")
      if (isFree(x, y + 1)) {
         perfectCount += getPerfectCount(x, y + 1, FROM_UP, (from == FROM_UP
               && isFree(x - 1, y) && isFree(x + 1, y)));
         availDirections++;
      }

      // if there's no available direction left check if field's perfectly
      // filled out
      if (availDirections == 0) {
         boolean isPerfect = isPerfect();
         if (isPerfect) {
            perfectCount++;
         }
      }

      // mark spot as untaken
      field[x][y] = false;

      // Return perfects (this had so to be commented)
      return perfectCount;
   }

   private boolean isPerfect() {
      boolean isPerfect = true;
      for (int u = 0; u < field.length; u++) {
         for (int v = 0; v < field[u].length; v++) {
            if (!field[u][v]) {
               isPerfect = false;
            }
         }
      }
      return isPerfect;
   }

   private boolean isFree(int x, int y) {
      return x >= 0 && x < field.length && y >= 0 && y < field[x].length
            && !field[x][y];
   }
}

Man kann via 1. Kommandozeilenparameter die Feldseitenlänge angeben oder richtig faul sein und einfach "fieldSize" in der Main-Methode ändern. Fragen zum Code versuche ich zu beantworten. (Z.B. wieso ich das Gedöhns nicht static gemacht habe: weil ich vorher lächerliche Optimierungen drin hatte, die nix gebracht haben, aber diesen Aufbau bevorzugten.)

Und was habt ihr so an einem Samstag Abend gemacht?
Tobchen - die Welt von Tobi!

Chrise

BeitragSo, Okt 13, 2013 1:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will ja nichts sagen... aber die Frage war ja nicht, wieviele Möglichkeiten für Schlangenpfade es gibt, sondern wieviele Möglichkeiten es für die Startfelder gibt, um ein perfektes Spiel zu erreichen ( So hab ich das zumindest verstanden).

Spion hat Folgendes geschrieben:
wieviele mögliche Schlangenpositionen es gibt, um das Spielfeld komplett auszufüllen


Demnach könntest du eine immens frühe Abbruchbedingung einfügen, bei der kein Rechner der Welt 40 min bruteforcen muss, nämlich dann wenn mindestens ein Pfad für das jeweilige Startfeld erfolgreich war und man dann eben zum nächsten Startfeld springt. ( was auch meistens mit nicht so schönen Zeiten endet. Sowohl für das Errechnen der Lösung selbst, als auch dem Samstagabend, der dadurch sicherlich gelungen ist... schönen Sonntagmorgen Wink )


Gruß,
Chrise
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

Tennisball

BeitragSo, Okt 13, 2013 1:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Dann hast du das wohl falsch verstanden, Chrise, denn:
Zitat:
Die Schlange beginnt immer oben links
 

CO2

ehemals "SirMO"

BeitragSo, Okt 13, 2013 1:12
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Chrise:
Dann macht aber der Punkt Zitat:
Die Schlange beginnt immer oben links (danach kann sie sich entweder nach rechts oder nach unten ausweiten)
keinen Sinn...
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Chrise

BeitragSo, Okt 13, 2013 1:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Aja stimmt, hatte ich wohl übersehen Smile
Danke fürs darauf aufmerksam machen.

Gruß,
Chrise
Llama 1 Llama 2 Llama 3
Vielen Dank an Pummelie, der mir auf seinem Server einen Platz für LlamaNet bietet.

BladeRunner

Moderator

BeitragSo, Okt 13, 2013 1:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe keine perfekte Antwort, aber einen Denkansatz: Du zeigst mit deinen zwei Beispielbildern sehr deutlich welche Arten des perfekten Gamings es gibt: Spirale und Zick-Zack. Alles andere Führt in eine Sackgasse.
Nun ist die Anzahl an Kombinationen nur noch davon abhängig an welcher Stelle des Spielfeldes man von einer Art des Einen man auf eine Andere Art des einen oder des Anderen umsteigt.
Dabei gibt es Randbedingungen: Der wechsel darf nur stattfinden wenn danach die noch freiliegenden Felder durch eine Kombination der beiden Arten erreicht werden können.
Gibt aber sicher noch ziemlich viele Mögliche Kombinationen.
Ein Beispiel ( auf 5*5):
-----
---°|
|---|
---||
|---|
Hier wird mit einer Spirale nach rechts und dann nach unten angefangen, danach wechselt die Schlange in ein Zickzack von unten nach oben.
Du musst also 'nur' alle validen Möglichkeiten einer Kombination von Spirale und Zickzack prüfen. Werden sicher einige Milliarden (Billiarden?) Kombinationen sein.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

CO2

ehemals "SirMO"

BeitragSo, Okt 13, 2013 2:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mir mal ein wenig Gedanken gemacht und bin zu dem Ergebnis gekommen, das folgende Formel für das Problem gilt:

Code: [AUSKLAPPEN]
x = (FeldGröße ^ 2) - FeldGröße


x Steht dabei für die Anzahl der Möglichkeiten; Die Formel gilt natürlich nur für quadratische Felder. Wie bin ich darauf gekommen? Ich habe mir folgendes überlegt: Habe ich ein 1 x 1 Feld, habe ich 0 Möglichkeiten das Feld zu füllen, denn ich starte ja schon auf dem einzig verfügbaren Feld. Bei einem 2 x 2 Feld habe ich 2 Möglichkeiten: Ich kann eine Spirale rechtsrum und eine Spirale linksrum bilden - Andere Variationen sind unter den gegebenen Regeln nicht möglich. Bei 3 x 3 wird es schon etwas mühseliger alle Möglichkeiten zu erklären, deshalb ein Ergebnisstrip: user posted image
das ganze habe ich dann auch noch mit 4 x 4 getestet und bin wie erwartet auf 12 Möglichkeiten gekommen. Das reichte mir dann als "Test" Very Happy
Nimmt man diese Formel ist die Antwort 90 Möglichkeiten.
Sollte ich einen Denkfehler haben, bitte bescheid sagen Very Happy
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti

Noobody

BeitragSo, Okt 13, 2013 5:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Snakeaufgabe ist allgemeiner bekannt als "Self-Avoiding Walk" und ist generell ein sehr schwieriges mathematisches Problem. Wikipedia sagt Zitat:
Calculating the number of self-avoiding walks in any given lattice is a common computational problem. There is currently no known formula for determining the number of self-avoiding walks, although there are rigorous methods for approximating them. Finding the number of such paths is conjectured to be an NP-hard problem.


D.h. eine Formel ist nicht bekannt und die besten bekannten Algorithmen haben alle exponentielle Laufzeit. Das Problem auf einem 10x10 Gitter duerfte daher schon an der Grenze dessen sein, was man in sinnvoller Zeit berechnen kann.

@CO2: Auf einem 1x1 gibt es genau eine Moeglichkeit, das Spielfeld komplett zu fuellen (nicht 0), und fuer ein 3x3 Feld gibt es viel mehr Moeglichkeiten, als du aufgezeichnet hast - das vierte Spielfeld von links in deinem Bild ist nicht mal erlaubt (da die Schlange nicht oben links beginnt). Auch sonst wird deine Formel nicht stimmen koennen, da man fuer 3x3, 4x4 und 5x5 komplett andere Resultate bekommt, wenn man es mit einem Programm abzaehlt.
Generell wird eine Pi-mal-Daumen Formel wenig Erfolg haben - nur weil eine Formel fuer die ersten 3 oder vier Werte die richtigen Resultate produziert, heisst es noch lange nicht, dass es die richtige ist, denn es gibt unendlich viele Formeln, die bis zu einer gewissen Feldgroesse die richtigen Antworten geben, aber danach komplett falsch sind.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

Xeres

Moderator

BeitragSo, Okt 13, 2013 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
@Tobchen: Eine lächerliche Optimierung fällt mir noch ins Auge:
Code: [AUSKLAPPEN]
private boolean isPerfect() {
   for (int u = 0; u < field.length; u++) {
      for (int v = 0; v < field[u].length; v++) {
         if (!field[u][v]) {
            return false;
         }
      }
   }
   return true;
}
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

PhillipK

BeitragSo, Okt 13, 2013 10:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ohje.. als ich das gestern gelesen hab, hab ich auch direkt an bruteforcing gedacht.
Mein ansatz wäre es, eine art baumdiagram draus zu basteln, denn für jedes feld gibt es 2 bis 3 unterknoten die begehbar sind.

Ich werde mich vielleicht auch dranmachen und was schreiben, aber 40minuten rechenzeit ist doch etwas krass Very Happy Allerdings habe ich mir den code nicht durchgelesen, weil java hass.

Hilft xeres' anmerkung denn? Oder ist es dann immernoch lahm? Smile

biggicekey

BeitragSo, Okt 13, 2013 11:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Xeres hat Folgendes geschrieben:
Die Tatsache, dass Spion 2 Beispiele auf Spielfeldern mit ungerader Seitenzahl als Beispiele bringt, spricht dagegen, biggicekey.
nö. Beide Beispiele wird man in einem echten Snakespiel nie erreichen können. Die Schlange müsste von Anfang an immer wachsen, tut sie beim eigentlichen Snakespiel aber nicht.

Da Spion nun gerade diese Beispiele zeigt, möchte er wohl einfach nur das Spielfeld mit einer Schlange gefüllt haben. Dann sind meine Anmerkungen irrelefant. Razz
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

ZEVS

BeitragSo, Okt 13, 2013 12:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Weitere Optimierungen, die mir einfallen würden:
Zitat:
Die Schlange beginnt immer oben links (danach kann sie sich entweder nach rechts oder nach unten ausweiten)

Bei quadratischen Feldern kann man den Code doppelt so schnell machen, wenn man die Schlange sich am Anfang nur nach rechts ausbreiten lässt. Die Varianten, die mit unten beginnen, erhält man durch Spiegelung an der Diagonalen oben-links <-> unten-rechts.
Zu Tobis Code: Wenn du einfach mitzählst, wie viele Felder belegt sind, kannst du die Funktion isPerfect sparen und einfach filledFields == fieldSize*fieldSize prüfen.
Zuletzt könnten auf mehreren Wegen gleichwertige Zwischenzustände entstehen, etwa so:
user posted image
(das linke ist übrigens eine Widerlegung von BRs Vermutung)
Diese Zustände sind verschieden, aber füllen genau die gleichen Felder und der Schlangenkopf ist an der gleichen Position. Eine Fortführung des linken Zustandes zu einem perfekten Snakespiel kann dann genauso auf das rechte angewandt werden. Was man mit dem linken ausgerechnet hat muss man folglich nicht auch noch für das rechte ausrechnen. Bei entsprechend großen Feldern (das Ziel ist ja hier 10x10) kann man so sicherlich viel Zeit einsparen.
Ich schau' mal, ob ich mit allen Optimierungen ein C-Programm hinkriege.

ZEVS
 

CO2

ehemals "SirMO"

BeitragSo, Okt 13, 2013 12:40
Antworten mit Zitat
Benutzer-Profile anzeigen
@ Noobody: Auf einem 3 x 3 Feld gibt es mit den Regeln nicht mehr Möglichkeiten - oder habe ich etwas übersehen?
Im 4. Bild soll die Schlange eigentlich oben links starten und dann nach unten gehen Embarassed
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
  • Zuletzt bearbeitet von CO2 am So, Okt 13, 2013 16:04, insgesamt einmal bearbeitet

BladeRunner

Moderator

BeitragSo, Okt 13, 2013 14:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Wieso Widerlegung? Das Bild zeigt eine Beginnende Spirale welches in ein Zick-Zack wechselt welches wiederum in dne Beginn eines anderen Zickzacks/Spirale zu münden scheint.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

ZEVS

BeitragSo, Okt 13, 2013 14:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Embarassed Pardon, ich hatte deinen Beitrag wohl etwas zu unaufmerksam gelesen. Schande über mich.

ZEVS

Gehe zu Seite 1, 2, 3, 4, 5  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group