Posts by pfq615

    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

    Es gibt aber überhaupt keinen Anlass sich wegen meiner Ungenauigkeiten in der Aufgabenstellung in die Wolle zu kriegen.

    Kriegen wir ja nicht, denn es ist meines Wissen kein einziges "böses" Wort gefallen, also alles gut lieber Götz. :ba_1:

    Ich finde es eher amüsant, wie unterschiedlich verschiedene Personen eine Aufgabe interpretieren, und wie schnell man dabei - wie mir auch schon passiert ist :ay_1: - eine Information in der Aufgabenstellung übersieht.


    Daher hier nochmal ein :bg_1: an alle "Mitinterpretierer"!

    ... das war auch nicht gefragt. "Yukkapalme" hätte z.B. weiterhin die "Yukkapalme" bleiben müssen und nicht zur "kapalme" mutieren, wie in deiner Lösung.

    Ich habe lediglich die Groß- und Kleinschrift berücksichtigt, auch um die Möglichkeiten von [ ] besser erklären zu können.

    Eine Minimallösung:

    LUA Source Code
    1. function kein_yak(str)
    2.     return (str:gsub("[yY]%a[kK]", ""))
    3. end

    Kleine Erklärung:

    Mit den [ ] kann man in LUA eigene Suchklassen definieren. Finde

    [yY] ein kleines oder großes y

    %a einen beliebiges Buchstaben

    [kK] ein kleines oder ein großes K

    Ausführlich:


    Oder etwas kompakter:

    LUA Source Code
    1. function entferne_X(str)
    2.     local l = str:len()
    3.     if l > 2 then
    4.         return str:sub(1, 1)..(str:sub(2, l - 1):gsub("x", ""))..str:sub(l, l)
    5.     else
    6.         return str
    7.     end
    8. end

    Der "4-achs G-Wagen Nikolaus 2" ist ein Rollmaterial, da findest du ihn auch. Der Immo-Eintrag im MK ist doppelt und somit verkehrt. Gleiches gilt für den "FFM_Kessel530 Glühwein".^

    Der "FFM_Kessel530 WX Bremser" ist auch ein Rolli statt Immo. Der ist allerdings nicht doppelt, hier fehlt der Rolli-Eintrag im MK.

    In EEP solltest du die Modelle also trotzdem finden.

    Oder mit einer Hilfmethode:

    Sicherlich weniger verständlich, funktioniert aber auch und funktioniert nicht (siehe Post #4), weil die 40er Grenze nicht korrekt berücksichtigt wird: :ay_1:

    LUA Source Code
    1. function in3050(a, b)
    2. return math.abs(a-b) <= 10 and math.abs(math.max(a, b) - 40) <= 10
    3. end
    LUA Source Code
    1. function stringMatch(a, b)
    2. anz = 0
    3. for i = 1, string.len(a)- 1, 1
    4. do
    5. if string.sub(a, i, i+1) == string.sub(b, i, i+1) then
    6. anz = anz + 1
    7. end
    8. end
    9. return anz
    10. end

    Oder ein wenig optimiert, wenn a wesentlich länger als b ist:

    LUA Source Code
    1. function zaehle9(arr)
    2.     anz = 0
    3.     for i = 1, #arr, 1
    4.     do
    5.         if arr[i] == 9 then
    6.             anz = anz + 1
    7.         end
    8.     end
    9.     return anz
    10. end

    #arr liefert die Anzahl der Elemente in einer Tabelle.

    Ich bin übrigens davon ausgegangen, das letzte2("a") -> 0 ergibt, und nicht "a" wie im ersten Post momentan noch beschrieben.

    Einfach, nur für kleine "x" und kein Leerstring in der Übergabe:

    LUA Source Code
    1. function DoppelX(str)
    2.     pos = string.find(str, "x")
    3.     return string.sub(str, pos, pos + 1) == "xx"
    4. end


    Erweitert, für kleine "x" und große "X" und kein Leerstring in der Übergabe:

    LUA Source Code
    1. function DoppelX(str)
    2.     pos = string.find(string.lower(str), "x")
    3.     return string.lower(string.sub(str, pos, pos + 1)) == "xx"
    4. end


    Ausführlich, für kleine "x" und große "X" und möglichem Leerstring in der Übergabe:

    LUA Source Code
    1. function DoppelX(str)
    2.     pos = string.len(str) > 0 and string.find(string.lower(str), "x") or 0
    3.     return string.lower(string.sub(str, pos, pos + 1)) == "xx"
    4. end
    LUA Source Code
    1. function zaehleXX(str)
    2.     anzahl = 0
    3.     for i = 1, string.len(str), 1
    4.     do
    5.         if string.upper(string.sub(str, i, i+1)) == "XX" then
    6.             anzahl = anzahl + 1
    7.         end
    8.     end
    9.     return anzahl
    10. end

    Und eine etwas ausführlichere:

    LUA Source Code
    1. function vorneMal(str, n)
    2.      ersteDreiZeichen = string.sub(str, 1, 3)
    3.      ergebnis = ""
    4.      for i = 1, n, 1
    5.      do
    6.           ergebnis = ergebnis..ersteDreiZeichen
    7.      end
    8.       return ergebnis
    9. end