Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Pomoc s algoritmom

Aktivity
Avatar
Lava
Člen
Avatar
Lava:31.7.2018 15:50

Nejde mi vymyslieť konkrétne riešenie.

Zkusil jsem: Skúšal som sa zamyslieť, ako by bolo možné zhotoviť takýto miniprogram.

Chci docílit: Potreboval by som si vyrobiť jednoduchý generátor zmien. Mám na mysli pracovné zmeny, napr. v štvorzmennej prevádzke (ranná, poobedná, nočná zmena a voľno). Funguje to systémom PO-NE 2+2+3, čiže 2 dni ráno, 2dni poobede, 3 dni nočná. Ďalší týždeň 2 dni voľno, 2dni ranná, 3 dni poobedná. Ďalší týždeň 2dni nočná, 2 dni voľno, 3 dni ranná a pod. Naozaj netuším, ako by som zhotovil logiku, ktorú by program pochopil a aby to vedel vypočítať z kalendára takým štýlom, že keď vyberiem dátum 22.7.2026, tak mi napíše, že robím nočnú. Napríklad.

Odpovědět
31.7.2018 15:50
Aspartám, sacharín, to je môj vitamín
Avatar
Odpovídá na Lava
Erik Šťastný:31.7.2018 15:59

Prostě můžeš ty směny a volna, tak jak jsi je řekl za sebou skládat za sebe do kalendáře na dané dny? Nebude to zrovna efektivní když vybereš rok 2026, ale za to je to velmi jednoduché.

 
Nahoru Odpovědět
31.7.2018 15:59
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:31.7.2018 16:15

Co udelat ruzne kalendare? ranni, dopoledni, odpoledni, nocni, dovolena?
Jinak, mi z toho popisu neni jasne, jak to ma fungovat. Co je vstupem. Kdyz tim program nakrmim, tak, co ma vyprodukovat. Kukurice, sacky, olej, sul, elektrina - stroj - sacky s popcornem. Nejaky priklad 3 lidi, treba.

 
Nahoru Odpovědět
31.7.2018 16:15
Avatar
Odpovídá na Peter Mlich
Erik Šťastný:31.7.2018 16:18

Já to pochopil tak, že program jednou na začátku nakrmí sekvencí směn a volna k určitému datumu odkud začíná a pak může jen zadat datum v budoucnosti a dostane odpověď typu noční nebo volno, atp.

 
Nahoru Odpovědět
31.7.2018 16:18
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:31.7.2018 16:22

'PO-NE 2+2+3, čiže 2 dni ráno, 2dni poobede, 3 dni nočná. Ďalší týždeň 2 dni voľno, 2dni ranná, 3 dni poobedná. Ďalší týždeň 2dni nočná, 2 dni voľno, 3 dni ranná a pod. '

Lojza
po | ut | st | ct | pa | so | ne
rano | rano | odpoledne | odpoledne | noc | noc | noc
volno | volno | rano | rano | odpoledne | odpoledne | odpoledne
noc | noc | volno | volno | rano | rano | rano

Ale, nevim, co s tim. Takhle to zadas do kalendare, takhle to zobrazi. Nebo, potrebujes predvyplnit kalendar? A uvazujes i statni svatky a tak? Protoze to neni tak uplne legrace. Nejspis jsou na to specializovane aplikace za drahe penize.

 
Nahoru Odpovědět
31.7.2018 16:22
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Erik Šťastný
Peter Mlich:31.7.2018 16:29

Jj, uz to taky vidim stejne, asi.
Normalne bych udelal tabulku, kalendar. Vyplnil do ni svatky a pak do ni zacal tohle vyplnovat. U cloveka bych pak sledoval, ktera vzory jsou komplet vyplnene a u ktereho diky svatku prisel o den. Ty usporene dny bude treba nejak resit.
Ale, obecne, tohle je spatne schema. Je to sice ferove takhle smeny rozhodit. Ale clovek potrebuje pravidelny rezim. A navic je to i v zakone. Na tohle stridani ti nikdo se zdravym rozumem nepristoupi. Maximalne to vydrzi 1-3 mesice, protoze bude mit tak naruseny spanek, ze se mu nebude darit usinat v dobe, kdy nema smenu.

 
Nahoru Odpovědět
31.7.2018 16:29
Avatar
Odpovídá na Lava
Matúš Olejník:31.7.2018 16:34

Keby si naplnil do poľa tie smeny ako
R, R, O, O, N, N, V... atď
Potom zadáš dátum o ktorom chceš zistiť info odrátaš aktuálny dátum a zistíš počet dní medzi nimi a tento počet dní pripočítaš k poradiu aktuálneho dňa (PO 0, NE 6) a dáš modulo o veľkosti tých smien tak dostaneš index smeny ktorá by mala byť. Nie som si úplne istý píšem narýchlo z vlaku, sorry ak to bude blbosť :D (samozrejme so sviatkami nerátam)

Nahoru Odpovědět
31.7.2018 16:34
/* I am not sure why this works but it fixes the problem */
Avatar
Odpovídá na Peter Mlich
Erik Šťastný:31.7.2018 16:34

Svátky většinou nikoho nezajímají ve vlivu na směny, projeví se to akorát ve výplatě. Jinak budeš se divit, ale takhle to chodí i v některých obřích firmách, mám kamaráda v mezinárodní firmě s miliardovýma obratama a chudáci tam prostě dělají, 2 dny denní 12 a pak hned 2 dny noční 12, apod. šílenosti, nechápu jak to někdo může dělat, přesně jak mluvíš o tom narušeném spánku a všechno prostě. Nicméně to je offtopic, kterým nemusíme spamovat :D

Editováno 31.7.2018 16:35
 
Nahoru Odpovědět
31.7.2018 16:34
Avatar
David Hynek
Tvůrce
Avatar
David Hynek:31.7.2018 17:37

Ale tak to přeci nefunguje. U směnných provozů se střídá i doba volna. Nikde nemůžeš mít 7 pracovních dní za sebou, pak mít dva dny volna a pak zas 7 dní práce. Jestli se nepletu, tak se tam musí střídat dlouhý a krátký týden. Viz odkaz na obrázek:

Nahoru Odpovědět
31.7.2018 17:37
Čím víc vím, tím víc věcí nevím.
Avatar
Lava
Člen
Avatar
Lava:31.7.2018 19:09

Je to tak ako som napisal. Pondelok utorok jedna zmena, streda stvrtok druha zmena, piatok, sobota, nedela tretia zmena. Cize to, co vyjde na piatok, plati cely vikend. Ked nocna, tak nocna. Ked volno, tak volno. Na tomto systeme funguju vsetky zmeny v chemosvite, cize asi 1500 ludi. Tento ukol je vsak len cisto pre mna, aby som si vedel vypocitat zmeny. Aby som to nemusel den po dni zadavat jak blb do kalendara, ked budem chciet vediet, co mi vyjde na stedry den.
Celkom sa mi paci ten napad s tym polom. Proste by som dajako v cykle daval datumy a priradzoval im zmeny podla toho, aky je to den v tyzdni.

Nahoru Odpovědět
31.7.2018 19:09
Aspartám, sacharín, to je môj vitamín
Avatar
Lava
Člen
Avatar
Lava:31.7.2018 20:43

Sviatky samozrejme v tomto systéme nás nezaujímajú, robí sa non-stop. Môže nastať nejaká celozávodná dovolenka, väčšinou cez vianoce, ale s tým nerátam, proste ako keby nebola.

Nahoru Odpovědět
31.7.2018 20:43
Aspartám, sacharín, to je môj vitamín
Avatar
David Hynek
Tvůrce
Avatar
Odpovídá na Lava
David Hynek:31.7.2018 21:22

Nedalo mi to. Je to základ. Dalo by se to upravit do funkce, která by vracela konkrétní den. A musí se to doplnit o startovací směnu

<?php
$klic = array(0,0,1,1,2,2,2);
$smeny = array("ranni","odpoledni","nocni","volno");
$pozice = 0;
$tyden = 1;
$posu = 0;
echo "<table>\n<tr><th>Tyden</th><th>Pondeli</th><th>Utery</th><th>Streda</th><th>Ctvrtek</th><th>Patek</th><th>Sobota</th><th>Nedele</th></tr>\n
<tr><td> $tyden: </td>";
for($a=0;$a<356;$a++)
{
$p = ($klic[$pozice]+(($tyden-1)*3))%4; // lépe jsem to nevymyslel, tohle je klic
echo "<td> ".$smeny[$p]." </td>";
if(($a+1)%7==0 and $a!= 0) echo "</tr>\n<tr><td> ".++$tyden.": </td>";
if($pozice == 6) $pozice = 0;
else $pozice++;
}
echo "</table>";
?>
Editováno 31.7.2018 21:24
Nahoru Odpovědět
31.7.2018 21:22
Čím víc vím, tím víc věcí nevím.
Avatar
Jan Štol
Člen
Avatar
Jan Štol:1.8.2018 0:44

Pokud jsem to správně pochopil, tak jsou vlastně jen 4 možnosti, jak může týden vypadat:

  • R,R,O,O,N,N,N
  • V,V,R,R,O,O,O
  • N,N,V,V,R,R,R
  • O,O,N,N,V,V,V

a takhle se to opakuje dokola.

Takže pokud jde o zjištění směny v daný den, tak mě napadlo něco jako:

<?php

$startDate = new DateTime('2018-08-01');
$targetDate = new DateTime('2018-08-17');
$startDateWeekIndex = 0; //0,1,2 nebo 3

$weeks = [
    ['R','R','O','O','N','N','N'], //0
    ['V','V','R','R','O','O','O'], //1
    ['N','N','V','V','R','R','R'], //2
    ['O','O','N','N','V','V','V'] //3
];

$date1 = clone $targetDate;
$date2 = clone $startDate;

$date1 = new DateTime($date1->modify('Monday this week')->format('Y-m-d'));
$date2 = new DateTime($date2->modify('Monday this week')->format('Y-m-d'));

$weeksCount = $date2->diff($date1)->d / 7;
$weekIndex = ($weeksCount+$startDateWeekIndex) % 4;
$dayIndex = $targetDate->format('N') - 1;

echo "Směna dne " . $targetDate->format('d.m.Y') . ": " . $weeks[$weekIndex][$dayIndex];

Datumy oba nastavuju na pondělí toho daného týdne, aby se lépe počítal rozdíl.

 
Nahoru Odpovědět
1.8.2018 0:44
Avatar
Lava
Člen
Avatar
Odpovídá na Jan Štol
Lava:1.8.2018 5:46

Fu. No vecer to vyskusam a ak to funguje, tak sa ti klaniam vrucne :-)

Nahoru Odpovědět
1.8.2018 5:46
Aspartám, sacharín, to je môj vitamín
Avatar
Lava
Člen
Avatar
Lava:5.8.2018 5:07

Kamarati, ono to uz existuje, aom zistil... https://play.google.com/…apps/details?…

Nahoru Odpovědět
5.8.2018 5:07
Aspartám, sacharín, to je môj vitamín
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 15 zpráv z 15.