aneinanderreihen von rechtecken

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
nadine_83
User
Beiträge: 12
Registriert: Donnerstag 10. Oktober 2013, 15:27

Hallo. Mein Problem ist bestimmt simpel, aber irgendwie komme ich nicht dahinter:
Ich habe ein großes Rechteck von der Größe 5x5. In diesem befindet sich ein kleines rechteck mit einer größe von 1x1. Wie schaffe ich es jetzt, dass das große Rechteck von diesen kleinen ausgefüllt wird? Ich habe über eine for-Schleife nachgedacht!?!

Vielen Dank!
BlackJack

@nadine_83: Was bitte ist ein „Rechteck” in diesem Zusammenhang?
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Wenn es dafür keine spezielle Funktion gibt, dann denk doch mal logisch: Das kleinere Rechteck soll ja vermutlich mittig im größeren Rechteck sitzen. Also könntest du zunächst den Mittelpunkt bestimmen (Seitenlängen jeweils halbieren). Von dieser Stelle gehst du dann um Höhe / 2 und Breite / 2 (beides bezogen auf des kleinere Rechteck) in Richtung Nullpunkt des Koordinatensystems. Und dort kannst du dann das kleinere Rechteck zeichnen.

Ist jedenfalls der Weg, der mir als erstes einfallen würde. Vielleicht gibt es einen anderen / besseren. Ich fand mein Vorgehen aber erstmal am naheliegendsten.
BlackJack

@snafu: Interessant was Du in die Frage hinein interpretierst. Wie so mehrere kleine Rechtecke ein Grosses ausfüllen sollen, ist mir allerdings nicht ganz klar geworden. ;-)
Benutzeravatar
snafu
User
Beiträge: 6908
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Ok, hab die Frage falsch verstanden... :oops:
BlackJack

@nadine_83: Wie man sieht kann man eigentlich nur raten. Aber ich versuche es auch mal: Kann es sein, dass Du einfach nur zwei verschachtelte ``for``-Schleifen suchst? Beziehungsweise `itertools.product()`?

Code: Alles auswählen

#!/usr/bin/env python
from itertools import product


def main():
    print 'Nested ``for`` loops:'
    for i in xrange(5):
        for j in xrange(5):
            print i, j
    print
    print '`itertools.product()`:'
    for i, j in product(xrange(5), xrange(5)):
        print i, j


if __name__ == '__main__':
    main()
nadine_83
User
Beiträge: 12
Registriert: Donnerstag 10. Oktober 2013, 15:27

Danke erstmal für die Antworten. Das mit den zwei for-schleifen habe ich mit schon gedacht. Die Größe des ersten Quadrates ist 0,2x0,2. Jetzt habe ich mir gedacht, dass ich diese einfach solange wiederhole, bis die 5 erreicht wird. ungefähr so:

Code: Alles auswählen

for a in xrange(5):
	for b in xrange(5):
		if groesse <= 5:
			groesse +=groesse
Dabei definieren "a" und "b" das große Quadrat und "groesse" ist mein kleines Quadrat.
Liege ich in irgendeiner Weise richtig damit? Ich bin mir bei der Wiederholung nicht so sicher, wie ich diese darstellen kann.
BlackJack

@nadine_83: Beschreibe doch mal das gesamte Problem. In ganzen Sätzen und ohne Lösungsansatz. Das mit der `grösse` macht jedenfalls keinen Sinn. Und nochmal die Frage was ist für Dich ein Rechteck? Aus welchen Informationen setzt sich das zusammen? Was bedeutet „aneinanderreihen”?
nadine_83
User
Beiträge: 12
Registriert: Donnerstag 10. Oktober 2013, 15:27

Ich habe das Problem - versucht - graphisch darzugestellen (Zeilennummern nicht beachten!). Die Sternchen zeigen was ich habe und die Kreuze, was ich am Ende haben möchte. Die Position der Sternchen bilden ein eigenes Rechteck/Quadrat. Die komplette Breite und Länge beträgt 5cm (vom ersten Sternchen links oben bis zum letzten Kreuz in der ersten Zeile und letzten Spalte).

Code: Alles auswählen

*       *         +        +         +         +

    *       +        +        +         +

*       *         +        +         +         +

    +       +         +        +         +  

+       +       +        +         +           +
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

nadine_83 hat geschrieben:Die komplette Breite und Länge beträgt 5cm (vom ersten Sternchen links oben bis zum letzten Kreuz in der ersten Zeile und letzten Spalte).
Woher nimmst du die Angabe in Zentimeter? Was ist dein Ausgabemedium? Das sieht irgendwie aus, als würdest du ein grafisches Toolkit dafür einsetzen (wollen).

Die Ausgabe als solche lässt sich ja leicht erzeugen (Python 3).

Code: Alles auswählen

def paint_square(size):
    line = ' '.join('*' for _ in range(size))
    for row in range(size):
        print(line if row % 2 == 0 else ' ' + line[:-2])


def main():
    paint_square(5)


if __name__ == '__main__':
    main()
Irgendwie scheint da aber mehr berücksichtigt werden zu müssen was du bisher nicht gesagt hast.
BlackJack

@nadine_83: Was heisst Du hast die Sternchen? Hast Du für jedes Sternchen ein Tupel mit Zahlen die den Punkt in einem Koordinatensystem darstellen? Oder ein Objekt das ein Rechteck modelliert? Oder irgend etwas ganz anderes?

Was möchtest Du denn eigentlich machen? Also was ist das Problem was Du hier zu lösen versuchst? Mit dem Wunsch aus Sternchen und Kreuzchen Rechtecke oder Quadrate zu machen, was immer das auch bedeuten mag, wacht man doch nicht eines morgens einfach so auf. ;-)
nadine_83
User
Beiträge: 12
Registriert: Donnerstag 10. Oktober 2013, 15:27

Die Sternchen stehen für ein Tupel mit Zahlen in einem Koordinatensystem und ich möchte, dass diese Sternchen solange wiederholt werden, bis sie einen Wert von fünf erreichen.
BlackJack

@nadine_83: Kannst oder willst Du nicht mal komplett verraten um was es hier geht, welche Daten Du hast, wie die aussehen, wo die herkommen, was Du damit machen willst, wie das Ergebnis aussehen soll, und vor allem *warum* Du das überhaupt machen willst?

Mit jeder Information die man Dir aus der Nase ziehen muss, kommen eigentlich nur noch mehr Fragen auf, statt Klarheit darüber was das Problem ist welches gelöst werden soll.
Antworten