Lua-Aufgabe 48: fünf drüber eins drunter

!!! Please ensure, that your contribution or question is placed into the relevant section !!!
Questions about rolling stock, for example, do not belong in "Questions about the Forum". Following is perhaps the right area where your question will be better looked after:
General questions to EEP , Splines, rolling stock, Structures in EEP, landscape elements, Signalling system and controlling, designers, Europe-wide EEP meetings , Gossip
Your cooperation to keep the forum clear is appreciated.
In the case of pictures that are attached to the article, the source must also be stated. This also applies to your own pictures, which were taken by you. Pictures without source information will be deleted!
  • Aufgabe:

    Prüfe, ob in einer Tabelle nums, die nur integer Zahlen enthält, ein 271 Muster vorkommt. Damit sind alle Fälle von drei aufeinander folgenden Zahlen gemeint, bei denen die zweite Zahl 5 größer ist als die erste und die dritte Zahl 1 kleiner als die erste. Zähl auch all die Fälle mit, in denen die dritte Zahl um maximal 2 vom geforderten Wert abweicht.


    Beispiele:

    plus_5_minus_1({1, 2, 7, 1}) -> true

    plus_5_minus_1({1, 2, 8, 1}) -> false

    plus_5_minus_1({2, 7, 1}) -> true

    plus_5_minus_1({2, 7, -1}) -> true



    LUA Source Code
    1. function plus_5_minus_1(nums)
    2. end

    Ergänze die obige Funktion so, dass sie true zurück gibt, wenn in der Tabelle nums mindestens eine Folge vorkommt, bei welcher der zweite Wert 5 höher ist als der erste, und der dritte Wert nicht mehr als 1 über oder 3 unter dem ersten Wert liegt.




    Setze deine Funktion statt der ersten drei Zeilen in folgendem Testskript ein und lasse es in einem Lua Interpreter oder einer leeren EEP Anlage laufen um deine Funktion zu überprüfen.

    The post was edited 1 time, last by Goetz ().

  • Fried-liche Grüße:aq_1:

  • Mist, Fried war wieder schneller:ao_1:.


    Ich persönlich würde aber den Methodenaufruf sofort beenden wenn das Ergebnis feststeht:

    LUA Source Code
    1. function plus_5_minus_1(nums)
    2. for i = 3, #nums do
    3. if nums[i-1] == nums[i-2] + 5
    4. and nums[i] >= nums[i-2] - 3
    5. and nums[i] <= nums[i-2] + 1 then
    6. return true
    7. end
    8. end
    9. return false
    10. end

    Viele Grüße Ralf

    -----------------------

    EEC, EEP 2.43 - 6, EEP 9 - 13, EEP 14, EEP 15.1, EEP 16, EEP 17

    Hugo + Tauschmanager + EEP-Tauscher + Modellkatalog + Modellkonverter + Bilderscanner

  • Ich persönlich würde aber den Methodenaufruf sofort beenden wenn das Ergebnis feststeht:

    Klar! Sollte man tun. Ebenso alle ifs zusammenfassen, wie du es gemacht hast. :bp_1:

    Ich sah nur, hat noch keiner geantwortet. Ran an den Speck. Tests erfüllt? Ja! Nichts wie raus mit der Antwort. Für Schönheit war keine Zeit mehr.:bo_1:


    Ist doch ein netter Wettkampf :bg_1:

    Fried-liche Grüße:aq_1: