Font
[thread]6444[/thread]

RDW #4 - Rätsel der Woche 4

Tags: Similar Threads

Reader: 1


<< |< 1 2 >| >> 18 entries, 2 pages
Crian
 2004-08-01 09:39
#85112 #85112
User since
2003-08-04
5826 articles
ModeratorIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
 RDW #4 - Rätsel der Woche Nummer 4
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


Regeln: * Bitte nicht vor Ablauf der ersten 72 Stunden ( = drei Tage )
~~~~~~~ nach Veröffentlichung Hinweise (Spoiler) oder Lösungen ver-
öffentlichen!

* Wenn diese Zeit abgelaufen ist, werde ich einen Thread mit
passendem Titel erstellen, in dem die Lösungen gepostet werden
und diskutiert werden können.

* Die Lösungen sollten nicht nur gepostet, sondern auch an mich
gemailt werden, damit ich sie testen, "bewerten" und zu-
sammenfassen kann.
Die Adrese dafür lautet:

crian <---AT---> perl <---MINUS---> community <---DOT---> de

Im Betreff sollte 'RDW' und die Nummer des Rätsels stehen.
Hilfreich wäre neben dem Quellcode der Username im Forum
sowie Perl- und OS-Version, falls Du diese kennst.

* Verständnisfragen drfen in diesem Thread gestellt werden, aber
Tipps und (Teil-) Lösungen sind hier unerwnscht.

* Ich werde die eingeschickten Programme im Netz zur Verfgung
stellen, so dass gerade lange Quellcodes nicht (komplett)
gepostet werden mssen.

* Zur Verwendung von Modulen: Ich möchte diese nicht generell
ausschließen, aber wenn quasi die komplette Aufgabe durch
die Verwendung eines Moduls ersetzt werden kann, ist dies
vielleicht nicht der Sinn der Aufgabe gewesen.



Aufgabe: Gegeben sei ein rechteckiges Spielfeld F mit n x m Feldern.
~~~~~~~~
Desweiteren gibt es eine Menge S mit Steinen auf diesem
Spielfeld. Jeder dieser Steine ist rechteckig und belegt
p x q Felder (die Steine können verschieden groß sein).

Die Steine drfen sich auf dem Feld nicht berlappen. (Das
heißt jedes Feld von F darf von höchstens einem Stein aus S
belegt sein.)

Schaffe eine interne Darstellung von F und S und Funktionen
(oder Methoden), um den Stein S_i in eine der vier Himmels-
richtungen auf dem Spielfeld zu verschieben.

Ist es nicht möglich, den gegebenen Stein in die gegebene
Richtung zu verschieben, so soll dies dem Aufrufer auf
irgend eine Weise mitgeteilt werden.

Es wird später eine Fortsetzung geben, die auf der Lösung
dieser Aufgabe aufbaut.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
esskar
 2004-08-01 15:47
#85113 #85113
User since
2003-08-04
7321 articles
ModeratorIn

user image
ist p und q für jeden Stein verschieden?
DS
 2004-08-01 16:35
#85114 #85114
User since
2003-08-04
247 articles
BenutzerIn
[default_avatar]
[quote=esskar,01.08.2004, 13:47]ist p und q für jeden Stein verschieden?[/quote]
Quote
(die Steine können verschieden groß sein)

Aber ich muss zugeben, dass ich das auch erst überlesen habe, und deswegen mein Programm nochmal ein wenig umbaun muss.
[E|B]
 2004-08-01 17:07
#85115 #85115
User since
2003-08-08
2561 articles
HausmeisterIn
[Homepage] [default_avatar]
Darf ich mir F ausdenken?
Wieviele Steine gibt es?
Sollen diese Angaben zuerst abgefragt werden?
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
kabel
 2004-08-02 01:07
#85116 #85116
User since
2003-08-04
704 articles
BenutzerIn
[default_avatar]
nein, beliebig viele, nein
-- stefan
Ishka
 2004-08-02 01:17
#85117 #85117
User since
2003-08-04
771 articles
HausmeisterIn
[Homepage] [default_avatar]
ist zu erwarten, daß die Kantenlänge der Steine, oder die Anzahl der Steine größer ist?
sub z{if(@_){1while$x[$k=rand 10];t($t=$x[$k]=1)}print map"$z[$x[$_]]$_".($_%3?
"":"\n"),1..9}sub t{$j=0;$x[$_+1]==$t&&($j+=2**$_)for 0..8;z,die"Gewinner $z[$t]
"if grep$_==($j&$_),7,56,73,84,146,273,292,448;z,die"Gleichstand\n"if@x>9&&!grep
!$_,@x}@x=4;@z=qw{. [ (};z$^T&1;while(<>){next if$_>9||$x[$_];t$t=$x[$_]=2;z 1}
kabel
 2004-08-02 01:32
#85118 #85118
User since
2003-08-04
704 articles
BenutzerIn
[default_avatar]
aehem ... meinst du, ob du das feld als matrix oder implizit durch die steine repraesentieren willst?
imo ist das egal, solange es funktioniert ;-)
-- stefan
[E|B]
 2004-08-02 02:32
#85119 #85119
User since
2003-08-08
2561 articles
HausmeisterIn
[Homepage] [default_avatar]
Vielleicht kann Crian die Aufgabenstellung nochmal etwas überarbeiten.
Ich blicke nicht so recht durch, was da gemacht werden soll...
Gruß, Erik!

s))91\&\/\^z->sub{}\(\@new\)=>69\&\/\^z->sub{}\(\@new\)=>124\&\/\^z->sub{}\(\@new\)=>);
$_.=qq~66\&\/\^z->sub{}\(\@new\)=>93~;for(@_=split(/\&\/\^z->sub{}\(\@new\)=>/)){print chr;}

It's not a bug, it's a feature! - [CGI-World.de]
Crian
 2004-08-02 11:25
#85120 #85120
User since
2003-08-04
5826 articles
ModeratorIn
[Homepage]
user image
Sinn und Zweck ist es, die Grundlage für verschiedene
Verschieberätsel zu bilden, in denen man einen bestimmten
Stein durch Umschieben von anderen Steinen befreien soll.

Ich habe die Aufgabe so vage formuliert, um keine Wege zu
verbauen.

Die Fortsetzung wird dann die Anwendung auf konkrete
Problemfälle sein. Wenn man also etwa einen objekt-
orientierten Ansatz gewählt hat, dann definiert man dann
etwa ein Spielobjekt, dem man die Feldgrößen, die Steine
und ihre Beschaffenheit sowie die Art, in der diese bewegt
werden dürfen mitgibt. (Und welches Problem gelöst werden
soll.)

Das Lösen solcher Puzzle wird dann eine weitere Aufgabe
sein, vielleicht auch das Erstellen eines Interfaces für
Menschen.

Ich werde außer bei großer Resonanz aber die Folgeteile
nicht unmittelbar auf diese Aufgabe folgen lassen.
Die Splittung in mehrere Aufgabenteile hat mehrere
Vorteile:

1) Die Aufgaben bleiben überschaubar.
2) Man kann an einem hinteren Aufgabenteil teilnehmen,
   ohne einen vorderen gelöst zu haben, dafür verwendet
   man einfach die Lösung, die einem am besten gefällt.
3) Man sitzt nicht so lange an ein und dem selben
   Aufgabentyp.

Ich versuche die Aufgaben zu streuen, diese lässt sich
wohl nicht vernünftig golfen, aber solche werden auch
wieder kommen.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
esskar
 2004-08-03 03:57
#85121 #85121
User since
2003-08-04
7321 articles
ModeratorIn

user image
hmmm...
kann sein, dass ich diese woche keine abgabe hinbekomme. morgen wird es heiß, da muss ich wohl ins schwimmbad und am mittwoch bin ich in köln basketball schauen; mal sehen, ob ich es noch zwischen schieben kann
<< |< 1 2 >| >> 18 entries, 2 pages



View all threads created 2004-08-01 09:39.