Knobelaufgabe zum Wochenbeginn ( Juni 2021 )

Alles Rund um SAP®.
11 Beiträge • Seite 1 von 1
11 Beiträge Seite 1 von 1

Knobelaufgabe zum Wochenbeginn ( Juni 2021 )

Beitrag von black_adept (Top Expert / 3701 / 78 / 771 ) »
Moin allerseits,

da die äußere Wärme gerade keine größeren Denkaufgaben gestatten heute mal eine kleine Aufgabe zum Wochenbeginn, welche allen von euch, die für NSA, CIA, MI5, Mossad, Interpol, KGB etc. arbeiten, bekannt sein dürfte.

Es geht darum, dass die Mafia/Triaden/Falschparker/Systemkritiker/... in Form von Bestellungen bei Lieferdiensten illegale Aktivitäten steuern. Es ist gelungen, einen Großteil der dabei verwendeten Schlüsselwörter den zugehörigen Verbrechen zuzuordnen, aber aktuell werden die damit gewonnenen Informationen lediglich gesammelt um an die Hintermänner zu kommen. Leider kann ich die Zuordnung Schlüsselwort zu Straftat nicht posten, denn wenn ihr an diese Information gelangt müsste ich leider... - ihr wisst schon.

Eure Aufgabe ist es nun Essensbestellungen nach diesen Schlüsselwörtern zu durchforschen und aus der Bestellung die Liste der vorhandenen Schlüsselwörter zu extrahieren. Die Schlüsselwörter werden von den Tunichguten in ihren Bestellungen allerdings abgekürzt, so dass lediglich die ersten 3 Buchstaben des Schlüsselworts in der Bestellung auftauchen müssen.

Gegeben sei folgendes Programm - eure Aufgabe ist es eine bessere Lösung in der Methode your_analysis als meine zu erstellen, die die Ausgabetabelle korrekt füllt. Sollte nicht allzu schwer sein, da die Demolösung ausschließlich für die Defaultbestellung funktioniert.
In der Tabelle mt_tiere stehen euch die Schlüsselworte zur Verfügung.

Code: Alles auswählen.

REPORT zss_knobel_2021_06 LINE-SIZE 1000.

CLASS lcl DEFINITION FINAL.
  PUBLIC SECTION.
    TYPES: BEGIN OF ts_result,
             offset TYPE i,
             tier   TYPE string,
           END OF ts_result.
    TYPES: tt_results TYPE STANDARD TABLE OF ts_result WITH EMPTY KEY.
    METHODS:
      constructor,
      main,
      your_analysis IMPORTING iv_order          TYPE string
                    RETURNING VALUE(rt_results) TYPE tt_results.

    DATA: mt_tiere TYPE STANDARD TABLE OF string WITH EMPTY KEY.

ENDCLASS.

PARAMETERS: p_order TYPE string LOWER CASE DEFAULT '32 Pfannkuchen mit Apfelmus und 3x Schlemmerplatte rot/weiß'.

END-OF-SELECTION.

  NEW lcl( )->main( ).

CLASS lcl IMPLEMENTATION.
  METHOD your_analysis.
    APPEND VALUE #( offset =  3 tier = 'Pfau'             ) TO rt_results.
    APPEND VALUE #( offset = 20 tier = 'Pferd'            ) TO rt_results.
    APPEND VALUE #( offset = 24 tier = 'Muschel'          ) TO rt_results.
    APPEND VALUE #( offset = 35 tier = 'Schwein'          ) TO rt_results.
    APPEND VALUE #( offset = 38 tier = 'Lemming'          ) TO rt_results.
    APPEND VALUE #( offset = 51 tier = 'Rotkehlchen'      ) TO rt_results.
    APPEND VALUE #( offset = 55 tier = 'Weinbergschnecke' ) TO rt_results.
  ENDMETHOD.

  METHOD main.
    DATA(lt_suspects) = me->your_analysis( p_order ).
    LOOP AT lt_suspects ASSIGNING FIELD-SYMBOL(<ls_suspect>).
      AT FIRST.
        WRITE:/ 'Verdächtige Bestellung :', p_order.
      ENDAT.
      NEW-LINE.
      POSITION 20.
      IF <ls_suspect>-offset > 0.
        WRITE p_order(<ls_suspect>-offset) NO-GAP.
      ENDIF.
      WRITE p_order+<ls_suspect>-offset(3) COLOR 6 NO-GAP.
      DATA(lv_offset_plus_3) = <ls_suspect>-offset + 3.
      IF lv_offset_plus_3 < strlen( p_order ).
        WRITE p_order+lv_offset_plus_3 NO-GAP.
      ENDIF.

      WRITE AT 120 <ls_suspect>-tier COLOR 7.
    ENDLOOP.
  ENDMETHOD.

  METHOD constructor.
    DATA: lv_tiere TYPE string.
    lv_tiere =  'Aal;Bandwurm;Coyote;Eber;Fasan;Gans;Hahn;Igel;Kabeljau;Lama;Made;Nacktmull;Panda;Rabe;Sardelle;Tarantel;Wal;Yak'
             && ';Adler;Bär;Dachs;Echse;Faultier;Geier;Hai;Iltis;Käfer;Nashorn;Ratte;Säbelzahntiger;Waran;Zander'
             && ';Affe;Barsch;Delfin;Eichhörnchen;Flamingo;Gemse;Hamster;Impala;Kamel;Nilpferd;Papagei;Raupe;Salamander;Tausendfüßler;Zebra'
             && ';Aguti;Beluga;Dodo;Eisbär;Floh;Gepard;Heilbutt;Ibis;Känguruh;Laus;Makrele;Ochse;Pelikan;Reh;Thunfisch;Wasserbüffel;Ziege'
             && ';Alligator;Biber;Dogge;Elch;Flunder;Giraffe;Hering;Jaguar;Karpfen;Leguan;Manta;Okapi;Pfau;Rentier;Tiger;Weinbergschnecke;Zitronenfalter'
             && ';Ameisenbär;Biene;Dompfaff;Emu;Forelle;Goldfisch;Hirsch;Katze;Lemming;Marabu;Orang-Utan;Pferd;Riesenkrake;Seeadler;Tintenfisch;Wespe'
             && ';Amöbe;Bison;Dorsch;Ente;Frosch;Gorilla;Holzwurm;Klapperschlange;Leopard;Maulwurf;Otter;Pinguin;Robbe;Silberfisch;Trampeltier;Wiesel'
             && ';Amsel;Blattlaus;Drossel;Esel;Fuchs;Grizzlybär;Hornisse;Koala;Libelle;Pottwal;Rochen;Spatz;Truthahn;Windhund'
             && ';Assel;Grauwal;Eule;Guppy;Huhn;Kranich;Löwe;Meerschwein;Puma;Rotkehlchen;Specht;Tsetsefliege;Wolf'
             && ';Auster;Bonobo;Hummer;Kröte;Luchs;Mistkäfer;Pute;Spinn;Uhu;Wombat'
             && ';Büffel;Hund;Kuh;Lurch;Milbe;Qualle;Stachelschwein;Vielfraß;Wurm;Bussard;Hyäne;Mondfisch;Stör;Vogelspinne;Motte;Schwein;Möwe;Mungo;Mücke;Murmeltier;Muschel'.
    SPLIT lv_tiere AT ';' INTO TABLE me->mt_tiere.

  ENDMETHOD.

ENDCLASS.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 3):
qyurryusHaubichristianguenter

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de


Re: Knobelaufgabe zum Wochenbeginn ( Juni 2021 )

Beitrag von jocoder (Specialist / 286 / 3 / 84 ) »
Eine kurze Nachfrage. Die Methode your_analysis soll die Bestellung (p_order) scannen und die verdächtigten Wörter, die in der Bestellung vorkommen (Die ersten drei Buchstaben eines der Tiere aus mt_tiere), mit Position (offset) ausgeben?

Re: Knobelaufgabe zum Wochenbeginn ( Juni 2021 )

Beitrag von black_adept (Top Expert / 3701 / 78 / 771 ) »
ja
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Knobelaufgabe zum Wochenbeginn ( Juni 2021 )

Beitrag von black_adept (Top Expert / 3701 / 78 / 771 ) »
Freitag werde ich wie üblich eine Analyse der eingegangenen Lösungen posten. Aber aktuell habe ich nur eine einzige Einsendung via PM bekommen und würde gerne weitere Ansätze sehen. Und wenn ihr glaubt den "Haken" an der Aufgabe noch nicht erkannt zu haben: Es gibt keinen. Einfach eine leichte Sommer-Fingerübung
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Knobelaufgabe zum Wochenbeginn ( Juni 2021 )

Beitrag von ewx (Top Expert / 4472 / 236 / 505 ) »
Hallo Stefan!
Danke für die Knobelaufgabe "Pastafahndung"!
Sie hat heute bei uns im Code-Dojo für viel Spaß gesorgt! ;)

Da es wirklich eine leichte Fingerübung war, wäre ein Vergleich der Lösungen hinsichtlich Performance mit z.B. 100.000 Tierarten.

Wichtig für weitere Fahndungserfolge wäre noch zu wissen, ob evtl. auch die Anzahl der verschlüsselten Tierarten wichtig für die Dekodierung ist...?

Lösung hast du per Mail.

Re: Knobelaufgabe zum Wochenbeginn ( Juni 2021 )

Beitrag von black_adept (Top Expert / 3701 / 78 / 771 ) »
Moin allerseits,
die Woche ist zu Ende, so dass ich wir üblich ein Fazit der mir eingegangenen Lösungen anbieten möchte.
Zuerst einmal muss ich mich allerdings entschuldigen, da diese Aufgabe leider sehr! schwammig gestellt war und dadurch verschiedene Interpretationsmöglichkeiten der Aufgabenstellung möglich waren und meine Demolösung alle diese zuließ. Weiterhin schien es so, dass ich ein paar Kommata in meiner Tierliste vergessen hatte, so dass das Tier Zanderaffe aufgetaucht ist und nicht die beiden Tiere Zander und Affe. Aber die Mafia ist halt gerissen und es war natürlich geplant so.

Zunächst einmal eine Aufklärung darüber, was nicht präzise genug war:
  • Es ist nicht präzisiert, ob Mehrfachtreffer in der Bestellung zu Mehrfachnennungen in der Ausgabeliste führen sollen. Es war zwar von mir so gedacht und die Markierungen im Text der Ausgabeliste hätten so interpretiert werden können.
    Aber wenn die Verbrecher "Adelige Nudelsuppe" bestellen, kann man das sowohl als 'Verbrechen "Delfin" geplant' als auch '2x Treffen mit "Delfin" geplant' interpretieren. Beides ist völlig legitim - ich hätte hier genauer sein sollen und schiebe das - wie alle anderen Fehler von mir - auf die Sommerhitze 😅
  • Es ist nicht klar, wie mit Überschneidungen zu verfahrenist. Wenn also "Beseelte Gießkannen" bestellt werden, finden sich dort sowohl "Esel" als auch "Seeadler", aber die Keysequenz "esee" in "beseelt" enthält sowohl das "ESEl" als auch das SEEadler. Auch hier sind beide Interpretationen für mich begründbar
Letztlich habe ich alle Lösungen so analysiert, dass eine der Interpretationsmöglichkeiten gelöst werden sollte - und das hat tatsächlich Einfluss auf die zu wählenden Ansätze.

Jetzt zu den Ansätzen: Alle Einsendungen basieren letztlich auf 2 geschachtelten Schleifen. Einerseits werden alle 3-buchstabien Teilstrings der Eingangsbestellung und andererseits alle 3-buchstabigen Schlüsselwörter abgeglichen. Je nachdem, welche der beiden Schleifen man als äußere und welche als innere wählt ergeben sich die beiden unterschiedlichen Ansätze:
Ansatz mit äußerer Schleife = 3-buchstabige Teilstrings:

Code: Alles auswählen.

Pseudocode:
LOOP AT 3-buchstabie Teilstrings
  LOOP AT 3-buchstabige Schlüsselwörter WHERE 3-buchstabiges-Schlüsselwort = 3-
buchstabiger Teilstring.
    Add entry to returntable.
  ENDLOOP
ENDLOOP
Diejenigen die diesen Ansatz verfolgt haben, haben die äußere Schleife üblicherweise mittels DO aufgesetzt und dann für den Teilstring (Bestellstring+sy-index(3)) entschieden, ob dieser in der Schlüsselworttabelle auftaucht.
Vorteil dieses Ansatzes: Man trifft auch Überschneidungen und Duplikate und ist in der Lage die innere Schleife durch einen geschickten Aufbau der Schlüsselworttabelle deutlich zu beschleunigen ( Hash oder Sort ) oder sogar mit READ TABLE zu verwenden. Man muss allerdings aufpassen, dass man bei dem Eingabestring nicht über das Stringende hinaus die 3-buchstaben wählt - führt sonst Dumps.
Und da ich gerade "geschickter Aufbau der Schlüsselworttabelle" erwähnt habe. Die von mir vorgegebene Tabelle war definitiv nicht so geschickt - aber (fast) alle haben sich entschieden eine Mappingtabelle mit Struktur Tier_3_buchstaben, Tier zu verwenden mit dem Feld Tier_3_buchstaben als (SORT- oder HASHKey ). Aber auch hier: Es gibt auch Ansätze OHNE Mappingtabelle!

Ansatz mit äußerer Schleife = 3-buchstabige Schlüsselwörter:

Code: Alles auswählen.

Pseudocode:
LOOP AT 3-buchstabige Schlüsselwörter 
  LOOP AT 3-buchstabige Teilstrings WHERE 3-buchstabiger-Teilstring= 3-
buchstabiges Scjhlüsselwort.
    Add entry to returntable.
  ENDLOOP
ENDLOOP
Der direkte Ansatz hier ist, über die im vorherigen Beispiel erwähnte Mappingtabelle zu laufen und dann die innere Schleife ( Suche über alle Teilstrings ) implizit mittels des Befehls "FIND" vom Kernel ausführen zu lassen und sich die Treffer im String zurückgeben zu lassen. Wenn man mit "FIND ALL OCCURRENCES" arbeitet bekommt man eine Treffertabelle zurück - aber dies ist halt nicht die relevante innere Schleife und von der Laufzeit her auch uninteressant.
Auch diese Ansatz findet Duplikate und Überschneidungen.

Und es gibt noch einen weiteren Ansatz, der in diese Abarbeitungsreihenfolge passt. Da beim Aufbau der Mappingtabelle zunächst 1x über die Eingabetabelle geloopt wird, kann man sich hier "nebenei" einen regulären Ausdruck aufbauen, mit dem man die äüßere Schleife abbilden kann. Beispiel so eines Ausdrucks: "( Aal|Ban|Coy|Ebe|Fas|Gan|Hah|Ige|Kab|...)"
Dann reduziert sich die Suche nach den Schlüsselwörtern auf ein "FIND ALL OCCURRENCES of REGEX ... ), so dass anschaulich gar keine Schleife mehr vorhanden ist. Aber auch hier gilt - die geschachtelte Schleife ist "einfach" in den Kernel verlagert worden.
Desweiteren muss man sich beim REGEX-Ansatz bewusst sein, dass er keine Überschneidungen trifft. Wenn dies in der Aufgabenstellung auszuschließen ist (und eine der möglichen Interpretationen ließ das ja zu ) ist dies ein sehr eleganter Ansatz zumal der Regex-String hier zwar lang aber nicht schwer verständlich ist.




Ich hoffe, die Fingerübung hat euch Spaß gemacht und dass diejenigen, die so nett waren mir ihre Lösungen via PM oder E-Mail zukommen zu lassen diese auch zu veröffentlichen. Insbesondere eine Lösung die mit REDUCE das Ganze quasi in einem einzigen Befehl ( + anschließendem SORT ) und ohne Hilfstabelle gemacht hat, hat mich sehr beeindruckt.

P.S.Noch ein Hinweis bei der Verwendung (sehr langer) Regex-Strings, die ja Enno eben schon angedeutet hat: Auch SAP kann nicht zaubern. Wenn der REGEX sehr! viele Einträge hat kann sich die Laufzeit, die der Kernel benötigt deutlich nach oben gehen. Habe ich in einem produktiven System selbst erlebt, wo wir ein paar tausend Strings ( Länge üblicherweise so 20-80 Buchstaben ) in einem Programmdurchlauf parsen mussten, wobei dabei eine wie oben angedeutete Buchstabenliste aber noch weitere Bedingungen gegeben waren . Da hat sich der Kernel dann schon mal 2-3 Sekunden Zeit gelassen bevor er sich bequemte eine Matchliste zurückzugeben, so dass wir gezwungen waren hier mit ein paar Vorüberlegungen die Buchstabenliste mit anderen Mitteln vorab zu reduzieren, so dass sie hinreichend klein wurde und sich der Kernel wieder mit "normalen" Antwortzeiten im Millisekundenbereich bedankte.

P.P.S.: "Pastafahndung" ist einfach geil und so was von gut als Überschrift für diese Aufgabe geeignet. Ich beiße mir in den Hintern, dass mir das nicht eingefallen ist. @Enno: Chapeau!

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
christianguenter

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Knobelaufgabe zum Wochenbeginn ( Juni 2021 )

Beitrag von ewx (Top Expert / 4472 / 236 / 505 ) »
Hallo Stefan, Entdecker des Zanderaffens in der zentralabapiatischen Steppe 2021!

Ich bin bin mir ja immer nicht sicher, ob andere meine Wortspiele erstens überhaupt verstehen und dann zweitens eventuell auch noch gut finde. Insofern vielen Dank für die Rückmeldung!

Leider hat sich daraus wieder Arbeit ergeben, denn ich habe deine Knobelaufgabe und das Wortspiel zum Anlass genommen, eine Website zu erstellen, auf der Code-Dojo-fähige (Knobel-) Aufgaben für ABAP gesammelt werden.
Oh wunder, die Seite heißt: https://pastafahndung.de/

Da es einen Namen, ein Logo und bereits eine Website gibt, ist das Projekt auch schon zu 90% abgeschlossen. Es müssen ja nur noch die Katas hinzugefügt werden...

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag (Insgesamt 2):
christianguenterblack_adept


Re: Knobelaufgabe zum Wochenbeginn ( Juni 2021 )

Beitrag von christianguenter (ForumUser / 1 / 6 / 4 ) »
Hallo zusammen,
eine schöne Fingerübung. Hier mein Ansatz mit REDUCE.
https://github.com/christianguenter2/ab ... ap#L35-L43

VG Grüße und schönes WE
Christian

Folgende Benutzer bedankten sich beim Autor christianguenter für den Beitrag (Insgesamt 4):
black_adeptewxa-dead-trousersqyurryus


Re: Knobelaufgabe zum Wochenbeginn ( Juni 2021 )

Beitrag von qyurryus (ForumUser / 84 / 61 / 33 ) »
Hier mal meine Lösung, falls es jemanden interessiert.
Meine Zielsetzung war Einfachheit, solide Performance und Vermeidung von (für mich 🙂) unlesbaren 1-Statement-Konstrukten und vom extrem langsamen Regex.

Logik:
1. Hash-Map für die Schlüssel der verdächtigen Tiere bilden
2. Such-String Zeichen für Zeichen verarbeiten, dabei immer die letzten drei Character in der Hash-Map suchen.

Code: Alles auswählen.

  METHOD your_analysis.
    TYPES:
      BEGIN OF ty_tiere,
        key  TYPE c LENGTH 3,
        tier TYPE string,
      END OF ty_tiere.
    TYPES ty_tiere_t TYPE HASHED TABLE OF ty_tiere WITH UNIQUE KEY key.

    DATA tier_map TYPE ty_tiere_t.
    LOOP AT mt_tiere REFERENCE INTO DATA(tier).
      INSERT VALUE #( key =  to_upper( tier->*(3) ) tier = tier->* ) INTO TABLE tier_map.
    ENDLOOP.

    DATA(offset) = 2.
    DATA(word_key) = VALUE string( ).

    word_key = to_upper( | { p_order+0(2) }| ).
    DO.
      TRY.
          DATA(char) = to_upper( p_order+offset(1) ).
        CATCH cx_sy_range_out_of_bounds.
          EXIT.
      ENDTRY.
      word_key = |{ word_key+1(2) }{ char }|.
      DATA(_tier) = VALUE #( tier_map[ key = word_key ] OPTIONAL ).
      IF _tier IS NOT INITIAL.
        APPEND VALUE #( offset = offset - 2 tier = _tier-tier ) TO rt_results.
      ENDIF.

      offset = offset + 1.
    ENDDO.
  ENDMETHOD.

Folgende Benutzer bedankten sich beim Autor qyurryus für den Beitrag (Insgesamt 3):
ewxblack_adeptchristianguenter


Re: Knobelaufgabe zum Wochenbeginn ( Juni 2021 )

Beitrag von a-dead-trousers (Top Expert / 3815 / 146 / 997 ) »
Hi.

Hier meine drei Ansätze. Mein Ziel war es möglichst kompakten Code zu haben. Also nichts mit eigener Hash-Map oder ähnlichem. Das sollte meines Erachtens schon in den Aufbau von mt_tiere fließen und war für mich daher nicht Teil der Lösung.

Code: Alles auswählen.

  METHOD your_analysis.
    CLEAR rt_results.
    LOOP AT me->mt_tiere ASSIGNING FIELD-SYMBOL(<ld_tier>).
      FIND ALL OCCURRENCES OF CONV char3( <ld_tier> ) IN iv_order IGNORING CASE RESULTS DATA(lt_match).      
      LOOP AT lt_match ASSIGNING FIELD-SYMBOL(<ls_match>).
        APPEND VALUE #( offset = <ls_match>-offset tier = <ld_tier> ) TO rt_results.
      ENDLOOP.
    ENDLOOP.
    SORT rt_results BY offset.
  ENDMETHOD.

Code: Alles auswählen.

  METHOD your_analysis.
* Initialisierungscode ************************************************
    DATA(ld_regex) = shift_left( val = REDUCE string( INIT str TYPE string FOR <ld_tier> IN me->mt_tiere NEXT str = str && '|' && CONV char3( <ld_tier> ) ) places = 1 ).

* Eigentliche Suche ***************************************************
    CLEAR rt_results.

    IF ld_regex IS NOT INITIAL.
      FIND ALL OCCURRENCES OF REGEX ld_regex IN iv_order IGNORING CASE RESULTS DATA(lt_match).
      LOOP AT lt_match ASSIGNING FIELD-SYMBOL(<ls_match>).
        FIND FIRST OCCURRENCE OF iv_order+<ls_match>-offset(<ls_match>-length) IN TABLE me->mt_tiere IGNORING CASE MATCH LINE DATA(ld_line).
        IF sy-subrc EQ 0.
          APPEND VALUE #( offset = <ls_match>-offset tier = me->mt_tiere[ ld_line ] ) TO rt_results.
        ENDIF.
      ENDLOOP.
      SORT rt_results BY offset.
    ENDIF.
  ENDMETHOD.

Code: Alles auswählen.

  METHOD your_analysis.
* Initialisierungscode ************************************************
    DATA(ld_regex) = shift_left( val = REDUCE string( INIT str TYPE string FOR <ld_tier> IN me->mt_tiere NEXT str = str && '|' && CONV char3( <ld_tier> ) ) places = 1 ).

* Eigentliche Suche ***************************************************
    CLEAR rt_results.

    IF ld_regex IS NOT INITIAL.
      DATA(ld_offset) = 0.
      WHILE ld_offset GE 0.
        ld_offset = find( val = iv_order regex = ld_regex case = abap_false off = ld_offset ).
        IF ld_offset GE 0.
          FIND FIRST OCCURRENCE OF REGEX |^{ iv_order+ld_offset(3) }| IN TABLE me->mt_tiere IGNORING CASE MATCH LINE DATA(ld_line).
          IF sy-subrc EQ 0.
            APPEND VALUE #( offset = ld_offset tier = me->mt_tiere[ ld_line ] ) TO rt_results.
          ENDIF.
          ADD 3 TO ld_offset.
        ENDIF.
      ENDWHILE.
      SORT rt_results BY offset.
    ENDIF.
  ENDMETHOD.
Aber nachdem ich jetzt den Ansatz von christianguenter gesehen hab, kommen mir meine Lösung richtig schwach vor. 😅
Hut ab. Obwohl ich die Lösung noch nicht ganz durchschaut habe, ist das was was ich mir mit Sicherheit für das eine oder andere Projekt noch abkupfern werde. Vielen Dank. Man lernt wahrlich nie aus.

lg ADT

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag (Insgesamt 3):
ewxblack_adeptchristianguenter

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Re: Knobelaufgabe zum Wochenbeginn ( Juni 2021 )

Beitrag von black_adept (Top Expert / 3701 / 78 / 771 ) »
a-dead-trousers hat geschrieben:
25.06.2021 16:56
Aber nachdem ich jetzt den Ansatz von christianguenter gesehen hab [...] ist das was, was ich mir mit Sicherheit für das eine oder andere Projekt noch abkupfern werde. Vielen Dank. Man lernt wahrlich nie aus.

Geht mir genau so - und genau darum mache ich von Zeit zu Zeit diese Knobelaufgaben. Zumal sogar solche scheinbar "leichteren" Aufgaben interessante Ansätze und Lösungen hervorbringen.
Davon abgesehen bin ich leider sowieso der Meinung, dass es für viele ABAPler nicht sonderlich viele Möglichkeiten gibt, über den Tellerrand hinauszuschauen - einfach auf Grund ihrer beruflichen Situation.
Freiberufler sind häufig als "Einzelkämpfer" unterwegs, Angestellte beim Endkunden sehen immer die selben Kollegen mit ihren Programmierstilen und Angestellte bei Beratungsgesellschaften sind irgendwo dazwischen. Und gerade in den letzten anderthalb Jahren war die Möglichkeit hat, sich beim Kaffee über ABAP-Entwicklung auszutauschen, und dabei diesen "Ich habe gerade was Neues gelernt" - Effekt zu erfahren, ja noch zusätzlich eingeschränkt.

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2):
christianguenterqyurryus

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Aktuelle Forenbeiträge

Texte im Rechnungskopf
Gestern von JHM 7 / 65
CO01 BADI
Gestern von L0w-RiDer 13 / 150
Dynpro Eingabe von Zahl mit Komma
Gestern von ewx 17 / 181
Probleme mit CORRESPONDING itab
vor 2 Tagen von ewx gelöst 7 / 87

Vergleichbare Themen

Knobelaufgabe zum Wochenbeginn ( Mai 2021 )
von black_adept » 11.05.2021 16:21
Knobelaufgabe zum Wochenende / Wochenbeginn
von black_adept » 23.08.2019 08:46
Knobelaufgabe zum Wochenende/Wochenbeginn
von black_adept » 04.09.2020 11:23
Knobelaufgabe ( August 2021 )
von black_adept » 13.08.2021 14:17