Diskuze: Práce se stringem
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Zobrazeno 9 zpráv z 9.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.


Posloupnost číslic si načti do 1000 prvkového pole celých cisel. V rozsahu indexu 0 až 998 (1000-13+1) prováděj součin číslic a porovnávej výsledek s největší hodnotou a v případě že bude větší, aktualizuj. Prvotní hodnota je inicializována součinem prvních 13 číslic. Můžeš využít toho že je-li alespoň jedno ze 13 čísel nulové, bude součin 0 a můžeš tak přeskočit na index následující za poslední nulou.
Tak třeba... každou '0' bych použil jako splitter a rozdělil string na menší části. Důvodem je zda vůbec existuje 13 po sobě jdoucích nenulových číslic... pokud ne, výsledek maximálního součinu bude 0. Pokud ano, bude potřeba projít alespoň z příkladového stringu o hodně méně možností.
Jiný přístup s podobnou myšlenkou, vzít prvních 13 číslic a zjistit zda v nich není 0, pokud ano posunout se na pozici nuly + 1 a vzít znovu 13 číslic. Pokud výběr neobsahuje 0, spočítá se součin a posune se o jednu číslici.
výsledek:
celkový počet číslic: 1000
substringů bez 0 délky >= 13: 24
substringů bez 0 délky 13: 219
maximum na pozici: 197
číslice: 5578669664895
součin: 23514624000
Výsledek by měl být 2091059712.
private void Pocitej()
{
List<int> vysledekList = new List<int>();
int pocetPoSobeJdoucichCisel = 13;
string s = @"1398024787037910369017901433749013239719493017201986983520312774506326239578318016984801869478851843758615607891129494954595017379583319528532088055110254069874715852386305071569329096329522744304355786696648950445244523161731856403098711121722383113522298934233803081353362766142828064444866452387492035890729629049156044077239071381051585930796086680172427121883998797908792274921901699720888093776757273330010533678812202354218097512545405947522436258490771167055601360483958644670632441572215539743697817977846174064955149290862569321978468622482339722413756570560574902614079729686524145351004744216637048440319989000889524345065854122758866688126427171479924442928230863465674813919123162824586078664583591245665294765456828489128831426076900421421902267105562632111110937054421750694165896040817198403850962455444362981230987879927244284909188745801561660979191338754992005240636899125607176063588611646710940507754100225698315520005593572972521636269561882670428252483600823257530420752963450";
for (int i = 0; i < s.Length; i++)
{
int c = int.Parse(s[i].ToString());
int soucin = 1;
for (int x = 0; x < pocetPoSobeJdoucichCisel; x++)
{
if ((i + x) < s.Length)
{
int cSum = int.Parse(s[i + x].ToString());
soucin = soucin * cSum;
}
}
vysledekList.Add(soucin);
}
int vysledekje = vysledekList.Max();
}
Myslím, že bylo to zadání na nalezení 13ti sousedních číslic s největším součinem a ne na výsledek toho největšího součinu...
Michael se ptá:
V uvedeném 1000 ciferním čísle nalezněte třináct sousedních číslic, které mají největší součin.
Jaká je hodnota takového součinu?
Přijde mi, že ti to někde ořízl 32-bit int a zahrnul ti jen součiny
menší než 2,147,483,647.
Tvůj string je:
pozice: 503
číslice: 9781797784617
součin: 2,091,059,712
Je to tak... 23514624000
private void Pocitej()
{
List<long> vysledekList = new List<long>();
int pocetPoSobeJdoucichCisel = 13;
string s = @"1398024787037910369017901433749013239719493017201986983520312774506326239578318016984801869478851843758615607891129494954595017379583319528532088055110254069874715852386305071569329096329522744304355786696648950445244523161731856403098711121722383113522298934233803081353362766142828064444866452387492035890729629049156044077239071381051585930796086680172427121883998797908792274921901699720888093776757273330010533678812202354218097512545405947522436258490771167055601360483958644670632441572215539743697817977846174064955149290862569321978468622482339722413756570560574902614079729686524145351004744216637048440319989000889524345065854122758866688126427171479924442928230863465674813919123162824586078664583591245665294765456828489128831426076900421421902267105562632111110937054421750694165896040817198403850962455444362981230987879927244284909188745801561660979191338754992005240636899125607176063588611646710940507754100225698315520005593572972521636269561882670428252483600823257530420752963450";
for (int i = 0; i < s.Length; i++)
{
long soucin = 1;
for (int x = 0; x < pocetPoSobeJdoucichCisel; x++)
{
if ((i + x) < s.Length)
{
long cSum = long.Parse(s[i + x].ToString());
soucin = soucin * cSum;
}
}
vysledekList.Add(soucin);
}
long vysledekje = vysledekList.Max();
}
Zobrazeno 9 zpráv z 9.