LabVIEWForum.de
1. LVF-Rätsel - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: Sonstiges (/Forum-Sonstiges)
+--- Forum: Smalltalk (/Forum-Smalltalk)
+---- Forum: Funstuff (/Forum-Funstuff)
+---- Thema: 1. LVF-Rätsel (/Thread-1-LVF-Raetsel)

Seiten: 1 2 3


1. LVF-Rätsel - Mr.T - 17.03.2007 11:58

So, ich möchte mal was testen, um zu sehen wie es so bei Euch allen ankommt.Big Grin

Es folgt ein Rätsel, welches es mittels eines VIs zu lösen gilt. Für den anfang nichts schweres, es sollte in ein paar Minuten gelöst sein.

Regel: Ein VI muss gepostet werden, sobald es "unterboten" wurde.

Aufgabe: Umrechner ins römische Zahlensystem

Forderungen:

- Numerische Eingabe
- Stringausgabe
- Ein "Umrechner" unseres Zahlensystems in das römische
- es dürfen keine Cases verwendet werden
- für den Anfang reicht die Umrechnung bis 9999
- für den Anfang sollen nur

1000 = M
100 = C
10 = X
1 = I

dargestellt werden (später können D = 500 und L = 50 gerne dazu kommen)

Beispiel:

1984 = MCCCCCCCCCXXXXXXXXIIII (= MDCCCCLXXXIIII)


Meine Vorlage, die sicher zu schlagen ist, es gelten alle Drähte ausser Schleifeneintritte/-ausgänge:

3 VIs von der Palette
1 Konstante
3 Array Konstanten
3 Forschleifen
11 Drähte

VIEL SPAß!


1. LVF-Rätsel - Lucki - 17.03.2007 12:51

Weiß nicht wie Du das genau rechnest, sicher ist nur, daß ich eine For_Schleife weniger habe, deshalb poste ichs mal...
[attachment=5716]
Bin übrigen auch Orwell -Fan, daß ich 1948 statt 1984 eingegeben habe war nur ein Versehen.

Edit: Das oben war nur ein suboptimaler Schnellschuß, aber ich laß das mal so stehen. Noch besser ist diese Variante hier, die ich auch als VI anfüge:
[attachment=5715]

Gruß Ludwig


1. LVF-Rätsel - Y-P - 17.03.2007 14:38

Hallo,

ganz schön knifflig mit Deinen Einschränkungen. Wink
Ich habe mir überlegt externen Code (von Matlab oder C) einzubinden. Da gibt es ja schon Beispiele im Netz. Nur habe ich das irgendwie nicht hingekriegt. Blush
Da hätte ich dann 1 Funktion aus LabVIEW, 1 numerisches Element, 1 Stringelement und 2 Drähte. Das wäre dann nicht mehr zu unterbieten. Aber ich weiß nicht, wie ich C-Code einbinde, wenn ich ihn in einem Textfile habe.

Gruß Markus


1. LVF-Rätsel - eg - 17.03.2007 15:28

Ja, ich glaube die zweite Variante vom Ludwig ist optimal (wenn diese funktioniert, was ich nicht bezweifele).

Gruss, Eugen


1. LVF-Rätsel - Mr.T - 17.03.2007 15:36

Hehe, geht gut los.

Eigentlich sollte das VI erst gepostet werden, wenn es unterboten wird.
Zuzufügen wäre vielleicht noch mal auszutesten, welches VI den kleinsten Speicherbedarf und die kürzeste Ausführungszeit hat.

Gut! Also dann: Step2:

Einbinden der 500 (D) und 50 (L), um die Römische Zahl darzustellen. Und z.B. auch sowas als 2. Stringausgabe: 4 = IV 6 = VI...

Hehe


1. LVF-Rätsel - Lucki - 17.03.2007 21:07

' schrieb:ganz schön knifflig mit Deinen Einschränkungen. Wink
Ich habe mir überlegt externen Code (von Matlab oder C) einzubinden. Da gibt es ja schon Beispiele im Netz. Nur habe ich das irgendwie nicht hingekriegt. Blush
Da hätte ich dann 1 Funktion aus LabVIEW, 1 numerisches Element, 1 Stringelement und 2 Drähte. Das wäre dann nicht mehr zu unterbieten. Aber ich weiß nicht, wie ich C-Code einbinde, wenn ich ihn in einem Textfile habe.

Die Einschränkung - kein case verwenden - ist willkürlich und nicht nachvollziehbar, aber echt blöd ist die fehlende Einschränkung, daß das Problem (- und nicht nur die Ein- und Ausgabe -) in der LabVIEW-Sprache G zu lösen ist. Ohne diese Einschränkung wird das im Sinne der Vorgabe optimale Ergebnis immer so aussehen wie Du sagtest, also also bei einer Aufgabe mit 1 Eingabe und 1 Ausgabe: 1 Bedienelement, gefolgt von einer Leitung, gefolgt von einem Code-Interface-Knoten, dann noch eine Leitung, hinführend zu 1 Anzeigeelement. Aber was hat das Ganze dann noch mit LabVIEW zu tun, oder bin ich hier im falschen Forum?

Gruß Ludwig


1. LVF-Rätsel - Mr.T - 17.03.2007 23:09

Haha - Lucki, wer das Rätsel stellt, gibt die Regeln vorBig Grin!

Nachdem ich Dein VI gesehen habe (was ein grober Regelverstoss war, siehe oben!!Big Grin) fiel mir folgendes auf:
Du brauchst 3 Schieberegister (ich habe 2), und 3 VIs von der Palette (gleichviele), damit hast Du mich nicht schlagen können, somit ist Dein VI wieder raus, weil ich gerade eben optimiert habe und auch nur noch 2 Forschleifen brauche! Puh, hatte ich nochmal Glück!Big Grin


Aber das ganze ist jetzt mal das erste Experiment... ich denke ich hätte Schieberegister auch angeben müssen und dafür Drähte weglassen sollen... Und keine roten Punkte zulassen (Typenwandlungen!! Wobei ich einen habe...mistBig Grin)

Prinzipiell geht es bei diesem Rätsel auf keinen Fall um sauberes und schönes programmieren, sondern um harte Fakten, sprich nur und nur und nur die Anzahl verwendeter Programmierelemente. Zum Vergleich: in C++ würde man die Anschläge, also Zeichen des Codes zählen - was zugegeben einfacher ist, als bei uns mit LV...:DWenn es darum ginge, wäre Dein Vi sicher besser.

Achso, und weiter noch:
Auch das Einbinden externen Codes gehört zu einer Programmiersprache. So auch hier, nur wer´s nicht kann (Ahaaaa! Lerneffekt wg. Wettkampf) hat halt Pech - wer das bei seinen Forderungen aufzählt kann somit ja auch für den Ausschluss solcher Aktivitäten (wie bei mir die Cases) sorgen. Wer´s hinbekommt hat gewonnen und bekommt LV-Respekt Big GrinBig Grin!

Letztlich soll diese Rätselaktion nur Spaß machen und nicht zu unnötigen debatten über "Rätselvorschriftenblödsinn" führen. Es soll ja halt noch ein Rätsel bleiben...

So, jetzt fange ich dann auch mal mit dem optimieren an. Mal sehen, ob ich noch die ein oder andere Sache Rausschmeissen kannBig Grin.

Aktueller Stand:

- Es werden MDLX und I angezeigt. (1561 = MDLXI, 1441 = MCCCCXXXXI) Hier Link
- 2 Forschleifen
- 3 VIs von Palette
- 2 Schieberegister
- 4 Konstanten, davon 2 uninitialisiert und 3 Arrays

So, wer kann besser?


Hier die geschlagene Version:

[attachment=5723]
[attachment=5724]


1. LVF-Rätsel - Lucki - 18.03.2007 10:39

' schrieb:Nachdem ich Dein VI gesehen habe (was ein grober Regelverstoss war, siehe oben!!Big Grin) fiel mir folgendes auf:
Du brauchst 3 Schieberegister (ich habe 2), und 3 VIs von der Palette (gleichviele), damit hast Du mich nicht schlagen können, somit ist Dein VI wieder raus, weil ich gerade eben optimiert habe und auch nur noch 2 Forschleifen brauche! Puh, hatte ich nochmal Glück!Big Grin

Wenn Du, ohne Dein VI zu posten, angesichts der gesehenen Postings nachoptimierst, so ist das vergleichbar mit einer öffentlichen Ausschreibung, bei der ein bevorzugter Mitbewerber die Angebote der anderen zu sehen kriegt, bevor er sein eigenes Angebot einreicht. Man nennt das dort Wirtschaftskriminalität. Aber Du gehst ja noch darüber hinaus. Stell Dir ein Spiel vor, in dem der, der zu dem Spiel eingeladen hat und gerade dabei ist zu verlieren, mitten im Spiel verkündet, die Regeln haben sich geändert. Genau so ist es, wenn Du jetzt plötzlich anfängst, die Schieberegister mit zu zählen.

Hier im Forum auch mal solche Aufgaben zu stellen, ist ein ein sehr gute Sache, und für dies Anregung gebührt Dir Dank. Es wäre aber dann besser, wenn sich der Aufgabensteller selbst zurücknimmt, d.h. mehr eine Moderatorfunktion übernimmt, und nicht mir vor keinem Mittel zurückschreckendem Ehrgeiz versucht, das Spiel selbst für sich zu entscheiden.

Gruß Ludwig


1. LVF-Rätsel - Mr.T - 18.03.2007 10:54

Hehe, nein, das möchte ich ja ganicht. bin doch kein krimineller!Big Grin

Mein ziel ist ja hier im Moment (Experimentierphase) erstmal herausfinden, welche Kriterien bei uns "nicht C++-lern" gezählt werden sollten.
Deshalb die Idee mit den Registern.

Wie seht Ihr das? Was sollte gezählt werden? Klar variiert das je nach Aufgabenstellung..und man vergisst dann auch mal was bei der Aufgabenstellung, was dann später doch noch dazukommen sollte...ist ja nicht der BND hierBig Grin

Bist Du der Meinung, wer mal ein VI gepostet hat, darf dann nicht mehr nachoptimieren, weil er Vorteile durch das einsehen anderer VIs hat? Das sollte die Regel mit dem Posting erst nach dem unterbieten genau bewirken. Deshalb auch immer meine Aufzählung der Elemente. Das zeigen des letzten VIs ist dann Ehrensache.

Findet Ihr so´ne Regel sinnvoll? Also, hier nun, um allem aus dem Weg zu gehen, meine oben erwähnte Lösung. Ausgehend von dieser Lösung könnten wir ja das Rätsel neu starten.

[attachment=5726]

[attachment=5727]


1. LVF-Rätsel - Lucki - 18.03.2007 12:18

Also, wenn Du mich fragst: Keine Erbsenzählerei mit Schleifen und Drähten, kein Siegerehrung, Teamarbeit statt Wettbewerb. Jeder postet, so wie er will, kritisiert die Entwürfe der anderern und bessert sie nach. Zum Schluß stehen dann 1, 2 oder auch 3 gleichwertige Lösungen da, und jeder hat etwas dazugelernt. Und bitte weder für Lösungen noch für Personen einen Oberguru, der dann Kraft seines Amtes verkündet: "Der/Die/Das ist die Nr. 1"

Gruß Ludwig