Anonymní profil ctverec – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Anonymní profil ctverec – Programujte.comAnonymní profil ctverec – Programujte.com

 

Příspěvky odeslané z IP adresy 89.177.134.–

ctverec
.NET › Seřazení prvků v poli od nej…
11. 4. 2016   #209870

To je samozřejmě správné řešení. Ale využívá vestavěné silné nástroje. Zajímavější je pokusit se to naprogramovat v detailu. S těmi čtyřmi prvky to působí tak nevinně, ale úplně jednoduché to není.

ctverec
.NET › Neopakování se randomu
10. 4. 2016   #209845

Řekněme, že se jedná o zadání, kdy daný kód se spouští opakovaně cyklicky. Pak by mohl mít smysl požadavek, aby se po sobě generovaná čísla neopakovala. Pokud ovšem množina, ze které se generuje, má pouze dva prvky, pak výsledek bude vždy stejný. 1 2 1 2 1 2 ... eventuelně 2 1 2 1 2 1 2 ... :) Ovšem pokud by množina měla tři prvky, pak už by to dávalo smysl. Po prvním výběru z množiny 1, 2, 3 by se v následujím kroku muselo vybírat pouze z množiny o dvou prvcích (zbývajících). A po té opět, pouze množina zbývajících by byla jiná. A tak dále...

ctverec
.NET › Neopakování se randomu
10. 4. 2016   #209841

Zadání není úplné. V tom příkladu, který jsi napsal, se nemá co opakovat. Asi ho budeš muset doplnit :)

ctverec
MySQL › GROUP BY vicenasobne grupovani
10. 4. 2016   #209839

Řešení je logická úvaha o třech krocích:

1. Části zadání "Z Následující tabulky potřebuji applicantprofileid z grupovat aby co radek to jedno id a neopakovalose" odpovídá řešení

SELECT a.applicantprofileid
FROM NEZNAMATABULKA a
group by a.applicantprofileid;

2. část "k tomu nejvyssi responsedate" původní řešení rozšírí o druhé pole
 
SELECT a.applicantprofileid, max(a.responsedate)
 FROM NEZNAMATABULKA a
 group by a.applicantprofileid;

3. a poslední část zadání "a dle toho jaky responsedate to byl priradit ze stejneho radku jako responsdate announcementid" rozšíří řešení o třetí pole, jehož hodnotu je potřeba nějak získat. Bylo by krásné, kdyby SELECT uměl optimalizační zkratku "našel-li jsi max(a.responsedate), tak k němu přiřaď jeho announcementid". Ale bohužel neumí. Takže je potřeba tuto hodnotu znovu nalézt kompletním separátním selectem

(select max(a2.announcementid) from NEZNAMATABULKA a2 where a2.applicantprofileid = a.applicantprofileid and a2.responsedate = max(a.responsedate))
 
Syntaxe SQL má svou krásu a eleganci, ale bohužel také své limity.
 

ctverec
MySQL › GROUP BY vicenasobne grupovani
9. 4. 2016   #209800

Omlouvám se, byly tam nějaké zbytky z mého experimentu. Tak ještě jednou, teď i s tím max místo first (může tam být i třeba min, to záleží..):

SELECT a.applicantprofileid, max(a.responsedate),
(select max(a2.announcementid) from NEZNAMATABULKA a2 where a2.applicantprofileid = a.applicantprofileid and
a2.responsedate = max(a.responsedate))
FROM NEZNAMATABULKA a
group by a.applicantprofileid;

ctverec
MySQL › GROUP BY vicenasobne grupovani
9. 4. 2016   #209799

Může být nějak takto


SELECT a.applicantprofileid, max(a.responsedate),
(select first 1 a2.announcementid from PARAMVALUE a2 where a2.applicantprofileid = a.applicantprofileid and
a2.responsedate = max(a.responsedate))
FROM NEZNAMATABULKA a
where a.applicantprofileid in (1,2,3)
group by a.applicantprofileid;


To first 1 je tam proto, že ten záznam je nejednoznačný, pokud existuje více takových záznamů (pokud syntaxe vašeho SQL nepodporuje first, tak můžete dát třeba max())
 

ctverec
Java › Hanojske veze (java)
8. 4. 2016   #209790

private void přesuň(int v, int z, int d)
{
     if (v > 1) přesuň(v - 1, z, 6 - z - d);
     Console.WriteLine("{0} {1}", z, d);
     if (v > 1) přesuň(v - 1, 6 - z - d, d);
}
 

ctverec
Java › Hanojske veze (java)
8. 4. 2016   #209789

        private static void přesuň(int v, int z, int d)
        {
            if (v == 1)
            {
                Console.WriteLine("{0} {1}", z, d);
            }
            else if (v > 1)
            {
                přesuň(v - 1, z, 6 - z - d);
                přesuň(1, z, d);
                přesuň(v - 1, 6 - z - d, d);
            }
        }
 

ctverec
C / C++ › Permutacie s opakovanim reku…
7. 4. 2016   #209761

Dobrý den, program simuluje všechny permutace s opakováním, tiskne po řádcích jednotlivé varianty. Každý řádek reprezentuje všechny prvky na jednotlivých pozicích, přičemž číslo na každé pozici značí, ze které skupiny prvků je prvek na daném místě. Tedy počet řádků je počet permutací. Proměnná 'i' je ve všech třech cyklech pouze lokální pomocný index. Proměnná k už je zajímavější. Reprezentuje pozici prvku, pro který se pro daný řádek generuje/zjišťuje ze které má být skupiny. Metoda print se volá pro všechny prvky pro všechny řádky. Jede se pěkně souvisle po řádcích a každý postupně pro k od 0 až po počet prvků-1. Rekurze pracuje tak, že v každý okamžik dělí prvky na dvě poloviny. Tu první považuje za danou, v té druhé hledá všechny kombinace, resp. kombinaci následující. Takže hemžení probíhá odprava, naopak nejpomalejší pohyb je vlevo.
 

 

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032021 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý