Lua-Aufgabe 15: Vorne2 Hinten2

!!! 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:

    Nimm die ersten zwei Buchstaben eines gegebenen, beliebig langen Strings str und setze sie einmal vor und einmal hinter den String. Besteht der String aus weniger als 2 Zeichen, dann setzt die vorhandenen Zeichen einmal davor und einmal dahinter. Gib das Ergebnis zurück.


    Beispiele:

    Vorne2_Hinten2("Gleis") -> "GlGleisGl"

    Vorne2_Hinten2("X") -> "XXX"



    LUA Source Code
    1. function Vorne2_Hinten2(str)
    2. end

    Ergänze diese Funktion so, dass sie einen neuen String zurückgibt, der in der Mitte den alten String str enthält und vorne sowie hinten die ersten zwei Buchstaben von str hinzubekommen hat. Wenn str weniger als zwei Zeichen hat, dann sollen die vorhandenen Zeichen vorne und hinten angehängt werden.



    Hinweis1:

    Die Funktion string.sub(str, i, j) kann in Lua auch mit Strings umgehen, die kürzer sind als der Bereich, der mit den Werten i und j angegeben wird. Sie gibt dann nur die verfügbaren Zeichen zurück.


    Hinweis2:

    In Lua sind in der Funktion string.sub(str, i, j) die Werte i und j beide inklusive. Und das erste Zeichen eines Strings steht in Lua an Position 1, nicht 0 (wie in anderen Programmiersprachen üblich.)




    Ersetze im folgenden Testskript die ersten drei Zeilen durch deine Funktion und lass es in einem Lua Interpreter oder einer leeren Anlage laufen um zu prüfen, ob deine Funktion korrekt funktioniert.

    The post was edited 2 times, last by Goetz ().

  • Hallo,

    würde es so machen:


    EEP 15.1 EEP 16
    MS Windows 10 Pro 64bit
    Prozessor: AMD FX-8370 Eight-Core Processor 4,0GHz // RAM: 32GB // SSD 256GB // Grafikkarte: GeForce GTX 950

  • Wie wir in Aufgabe 13 gelernt haben, wird folgende Variante wahrscheinlich "schneller" sein, da die Funktion string.sub() nur 1x aufgerufen wird.

    Fried-liche Grüße:aq_1:

  • Hallo zusammen,


    Code
    1. function Vorne2_Hinten2(str)
    2. txt = string.sub(str,1,2)
    3. return txt..str..txt
    4. end

    Der Code tut was er soll :be_1:, aber


    fehlerfrei wird er erst durch das Schreiben von local vor die Variablen, die nur in der Funktion enthalten sein sollen (Es sei denn Du willst ein globales txt überschreiben, das schon außerhalb der Funktion definiert ist).


    Lesbarer wird es m.E. durch folgendes:

    • einen guten Variablennamen vergeben - diesmal mit Kommentar
    • Code formatieren (Leerzeichen hinter die Kommas)
    LUA Source Code
    1. function Vorne2_Hinten2(str)
    2. -- Erster Buchstabe oder die ersten beiden Buchstaben
    3. local firstLetters = string.sub(str, 1, 2)
    4. return firstLetters .. str .. firstLetters
    5. end


    Viele Grüße,

    Andreas Kreuz.

    EEP: Version 15 - PC: AMD Ryzen 3700X, 16 GB RAM, NVidia Geforce GTX 1080 Ti, Windows 10 - Notebook: MacBook Pro 2015, mit ATI Radeon R9 M370X, Windows 10


    Webseite: Lua-Bibliothek für EEP (mit Tutorials)