Ezt hogyan oldanátok meg?
Disclaimer: munkahelyi feladat illusztrációja, nem iskolai házi feladat.. ;)
Adott egy excel táblázat ami mondjuk egy autószervíz szerelői között osztja el a bejövő autókat. Például
Kategória | Típus | Évjárat | Szerelő
SUV | BMW | 2015 | Józsi
Kombi | BMW | 2017 | Pisti
Kombi | Opel | 2015 | Gergő
SUV | BMW | 1995 | Géza
(Nagyon egyszerüsített kivitel.)
Tehát ez a szabály-táblázat azt tartalmazza, hogy ha bejön egy autó a szalonba, akkor a szervizvezető kinek adja a kocsit. És például:
Az összes SUV-ot Józsi szereli, a kombikat Pisti, kivéve az Opeleket, mert arra ott van a Gergő. És a 20 évnél öregebb autókkal Géza bíbelődik.
A fenti táblázat csak egy minta, de mondjuk az összes esetre kimerítő lenne. Na és a kérdés, milyen algoritmussal osszuk be a beérkező autókat.
Ha a lookup táblázat SQL szerveren van, akkor nyilván könnyű a feladvány (SELECT szerelo WHERE kategoria=SUV stb. stb.). Ha a lookup táblázatot beolvassuk Pandas dataframe-be, akkor is egyszerű Pandasban leszűrni.
De a kérdésem az, hogy ilyesféle szabályokat akarok megoldani, akkor van erre valami szokásos algoritmus?
A szabályokat nem akarom a kódba beégetni, mivel ha változtatni kell, akkor fontos, hogy a felhasználók által is konfigurálható legyen a rendszer. Tehát valamiféle konfigurációs fájlt kell használni.
Egyéb ötlet, mint a fentiek?
HA "20 évnél öregebb":
--Gergő
EGYÉBKÉNT:
--HA "SUV":
----Józsi
--HA "Kombi":
----HA "Opel":
------Gergő
----EGYÉBKÉNT:
------Pisti
"A szabályokat nem akarom a kódba beégetni, mivel ha változtatni kell, akkor fontos, hogy a felhasználók által is konfigurálható legyen a rendszer. Tehát valamiféle konfigurációs fájlt kell használni."
Ezzel az a baj, illetve a dolog komplexitását az adja, hogy valahol definiálni kell a szabályok közötti hierarchiát. És erre való a kód.
Pl. tegyük fel, hogy megjelenik egy új kategória pl. mercedes, amit mondjuk hozzárendelünk Pistihez. De mi a helyzet a 20 évnél idősebb mericvel és a merci SUV-kal?
"Az összes SUV-ot Józsi szereli, a kombikat Pisti, kivéve az Opeleket, mert arra ott van a Gergő. És a 20 évnél öregebb autókkal Géza bíbelődik."
Ezek a szabályok ebből a táblázatból nem derülnek ki. A feladat nem oldható meg.
Ha autómárka - a1 szerelő aki ehhez az autómárkához ért
Ha öreg autó -b1 szerelő aki speciálisan ehhez ért
Ha suv - c1 szerelő aki a suvhoz ért
Ha kombi - c2 szerelő aki a kombihoz ért
else
akinek van ideje
és akkor az
a1 a2 a3 stb ki lehet tölteni a felhasználóknak márka igényekre (ez az elsődleges szempont)
b1 b2 b3 stb ki lehet tölteni a felhasználóknak egyéb igények pl autó kora (másodlagos szempont)
c1 c2 c3 stb ki lehet tölteni a felhasználóknak suv kombi stb szakértelemre (harmadlagos szempont)
De én kezdő vagyok nagyon, csak gondolkodtam hogy oldanám meg.
Akár szűréssel is sorba lehetne a rendezni az adatokat és akkor egyértelműen látszódik, hogy melyik kihez kerül. Emlékeim szerint az Excel tudja kezelni az összetartozó adatokat szűrésnél. Annyi hátránya van a dolognak, hogy így megkavarjuk a listát, ami nem feltétlenül előnyös, ha a szervizvezető beérkezési sorrendben akarja látni.
Ha mindenáron makrózni kell, akkor egyszerűen minden opcióhoz egy HA() feltételt kell hozzárendelni, majd egymás után rakni a feltételeket és kidobja az algoritmus a szerelő nevét. Arra kell csak figyelni, hogy lehetnek prioritásos feltételek, pl. ha 20 évnél régebbi az autó, akkor automatikusan egy adott szerelőhöz kerül, a többi feltételt már nem kell figyelembe venni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!