Předmět Autor Datum
000000 000000 000000 000000 000000 000000 000000 000000 ======= 0000000…
MaSo 13.03.2011 23:33
MaSo
Každý písmeno - jiný číslo...
Tomix 13.03.2011 23:48
Tomix
Pokud je každé písmeno jiné číslo, tak je řešení hodně moc. Lépe řečeno nekonečně mnoho...
MaSo 14.03.2011 09:25
MaSo
Záleží na tom jaké číslice zadáš za písmena. Je víc možností, ale určitě ne nekonečně mnoho :-)
Stefran 14.03.2011 09:58
Stefran
Aby souhlasil ten součet? Mám za to, že takových moc nebude. Nebo jo?
Kráťa 14.03.2011 12:19
Kráťa
Pokud mohu za každé písmeno dosadit jiné číslo, vyplývá mi z toho, že můžu dosadit za jakékoliv písm…
MaSo 14.03.2011 13:09
MaSo
Jo ty to myslíš tak. Já to zase pochopil, že za "A" musí být vždy třeba "2", za "N" třeba "4" a vzni…
Kráťa 14.03.2011 13:23
Kráťa
Krata to chape spravne.
fleg 15.03.2011 10:32
fleg
To je snad jasný, že všechny A jsou stejný a nerovnaj se ničemu jinýmu, stejně tak O a D.
Tomix 15.03.2011 18:31
Tomix
???????????????????????????
Cat 13.03.2011 23:38
Cat
:-D zkusím štěstí: [5371-221px-aachartaa-jpg] jedenáctka je jen pro ostříže.
kmochna 13.03.2011 23:47
kmochna
som zvedavy, komu sa bude chciet rozmyslat nad takymi krepostami :-D.
wam_Spider007 14.03.2011 00:44
wam_Spider007
IMHO to není o nic větší cypovina, než ty hádanky vkládané např. MaSem.;-)
Moas 14.03.2011 06:45
Moas
strčil bych to excelovskému řešiteli, kdybych na to měl čas :-) edit: máte-li někdo zájem naučit se…
touchwood 14.03.2011 06:47
touchwood
Jo tak to by mě zajímalo.
Tomix - nologin 14.03.2011 11:25
Tomix - nologin
Co sa vypytujes, sem s tym. Aj ked ja mam len OO, takze asi nic.
fleg 14.03.2011 11:26
fleg
A máš námět na bezva článek :-)
Kráťa 14.03.2011 12:18
Kráťa
Je to obdoba příkladu co jsem kdysi dávno viděl ve VTM: PSICI+PSICI+PSICI=HAFANI - jedno řešení Udě…
Tomix - nologin 14.03.2011 11:36
Tomix - nologin
HAFANI v PYTHONU: CtCoPfEg
Tomix 15.03.2011 20:21
Tomix
Výsledek 15 minut (čistého času) mého snažení: V případě, že každé písmenko reprezentuje jinou čísl…
touchwood 14.03.2011 19:46
touchwood
Úloha vede na jednu rovnici o 9 neznámých : 8Y + 80Z - 201A + 8000T - 20000O + 799900D - 10N - 1000…
hynajs 15.03.2011 10:31
hynajs
Kruciš, rovnice o devíti neznamých je na mě moc. Takže tradiční pokus-omyl. První výchozí Y=1, ve vý…
Zarniwúp 15.03.2011 12:25
Zarniwúp
509821*8=4078568 509816*8=4078528 :beer: Správně. DOTAZY 509821 PORADNA 4078568 řešení v MS SB…
Tomix 15.03.2011 18:33
Tomix
Ještě přidávám seznam řešení, kde jsou všechny proměnné nenulové : 474811*8=3798488 484811*8=387848…
hynajs 15.03.2011 10:55
hynajs
Tomuhle ale nerozumím.
Tomix 15.03.2011 18:51
Tomix
DOTAZY = první šesticiferné číslo - je tam 8x, takže *8 = PORADNA - 7 místné číslo
marekdrtic 15.03.2011 19:43
marekdrtic
:-) Ale tenhle výpis nesplňuje žádný podmínky. (skoro žádný) Dneska jim to funguje normálně tak dám…
Tomix 15.03.2011 20:12
Tomix
Vše jsem snad popsal v předešlých dvou příspěvcích. Nesplňuje podmínku, aby hodnoty proměnných byly…
hynajs 15.03.2011 20:20
hynajs
Proč tam není třeba 474812*8=3798496? Jsem nějaký namrzlý, ale proč tedy nevyhovuje tohle?
Zarniwúp 15.03.2011 20:30
Zarniwúp
Protože nalevo A=8 , napravo A=6 ( na konci).
hynajs 15.03.2011 20:40
hynajs
Vím, proč vyhovují ty dva jediné správné. Proč ten, co jsem postnul, nemůže být ve skupině "nenulový…
Zarniwúp 15.03.2011 20:44
Zarniwúp
Aha, v seznamu jsou výsledky, kdy je respektována neměnnost A. Jaký to má důvod?
Zarniwúp 15.03.2011 20:49
Zarniwúp
Zřejmě veškeré možné výsledky, kde se nevyskytne nula. Nerespektuje to požadavek, že neznámá může na…
Zarniwúp 15.03.2011 20:17
Zarniwúp
Tak ne, hned první zkouška ukázala, že píšu blbosti. :-)
Zarniwúp 15.03.2011 20:19
Zarniwúp
Jsem z vás v pasti. Vůbec nevím, která bije... ::)
Petr_PM 15.03.2011 20:08
Petr_PM
Neboj, nejsi sám ;-)
vlk56 15.03.2011 20:12
vlk56
do C prekladaca nech si to strci sam kto chce :) DOba vypoctu bude radovo desatiny sekundy. Doba pro…
MM.. 15.03.2011 20:18
MM..
P.S. mne to vypisalo tieto riesenia DOTAZY=000000, PORADNA=0000000 DOTAZY=000005, PORADNA=0000040 DO…
MM.. 15.03.2011 20:26
MM..
Pekné riešenie. :-) Doplním podmienku, že cifry sa nemôžu opakovať: #include <stdio.h> int main()…
los 15.03.2011 21:59
los
Velmi pekne riesenie ;) Mna nenapadlo ze overit sa to da spocitanim pouzitych cifier, a ine sposoby…
MM.. 15.03.2011 22:42
MM..
Vyzkoušeno: SiV5DJv2 Hezký, akorát bych to potřeboval trochu okomentovat.(nebo ne, pohledám si to)…
Tomix 15.03.2011 23:24
Tomix
kompletny komentar k tomu programu je tu: http://en.wikipedia.org/wiki/Operators_in_C_and_C% 2B%2B :…
MM.. 15.03.2011 23:31
MM..
Děkuji.
Tomix 15.03.2011 23:36
Tomix
este preistotu ti dam priklad: ked chcem z cisla x=123456 napriklad 3.cifru zprava, tak vydelim (ope…
MM.. 15.03.2011 23:48
MM..
<< je bitovy posun dolava, 1<<0 je 1, 1<<1 je 10 binarne, takze 2. 1<<2 je 100 binarne, takze 4. Atd…
MM.. 15.03.2011 23:53
MM..
Dík za vyčerpávající výklad. Řešení jsem upravil pro příklad PSICI+PSICI+PSICI=HAFANI codepad.org -…
Tomix 20.03.2011 21:32
Tomix
Programovanie neni o pocitoch ani ocakavaniach ale o absolutne preciznych definiciach a priebehoch.… poslední
MM.. 20.03.2011 21:53
MM..
Spíš bych doplnil podmínku, že použité vazby číslic s písmeny ve slově DOTAZY se musí shodovat ve vý…
Stefran 15.03.2011 22:51
Stefran
Tady jsou další podobné... hadanky-algebrogram.html 11.htm
Tomix 20.03.2011 21:50
Tomix

Pokud mohu za každé písmeno dosadit jiné číslo, vyplývá mi z toho, že můžu dosadit za jakékoliv písmeno jakékoliv číslo. Nikde tam není řečeno, že nemůžu dosadit za "A" třeba 5 a ve druhém řádku pak třeba 2. Jenom si musím dávat pozor, aby byl výsledek sedmiciferný.

strčil bych to excelovskému řešiteli, kdybych na to měl čas :-)

edit: máte-li někdo zájem naučit se používat Řešitele v Excelu, mohu to demonstrovat na tomto příkladě. Prakticky je to otázka/příklad na cca 10 minut.

Je to obdoba příkladu co jsem kdysi dávno viděl ve VTM:
PSICI+PSICI+PSICI=HAFANI - jedno řešení

Udělal jsem si to pokusně ve Small Basicu, odeslal na jejich sběrnej web,
že sem dám odkaz,ale hned se spustilo vykonávání v Silvertentononcu a ucpal mi procesor až k restartu na bedně :-|.

Výsledek 15 minut (čistého času) mého snažení:

V případě, že každé písmenko reprezentuje jinou číslici, nemá tahle úloha IMHO (nebo alespoň dle Řešitele) řešení. Pokud rezignujeme na unikátnost, řešení existuje.

Původně jsem chtěl napsat alespoň krátké povídání, ale jsem dnes nějaký "přešlý mrazem" (resp. "jarní únavou"), takže odkážu na celkem pěkný článeček tvůrce geniálního nástroje RJtools. Resitel.htm

Úloha vede na jednu rovnici o 9 neznámých :

8Y + 80Z - 201A + 8000T - 20000O + 799900D - 10N - 10000R - 1000000P = 0

která má obecně nekonečně mnoho řešení. Jenže zde jsme nepochybně vázáni požadavky na proměnné, každá by měla být celá, větší nebo rovna 0, menší nebo rovna 9.
Napsal jsem si v rychlosti prográmek, který mi dal 86 řešení.
Pokud chceme, aby se P nerovnalo nule (aby řešení bylo jaksi hezké), našel jsem 66 řešení.
Chceme-li, aby byly všechny proměnné od sebe různé, dává mi dvě :

509821*8=4078568
509816*8=4078528

Kruciš, rovnice o devíti neznamých je na mě moc. Takže tradiční pokus-omyl. První výchozí Y=1, ve výsledku jsem se dostal k 8568, tak proč jsem sakra usoudil, že dál to nejde? (Pak jsem si řekl, že mám jinejch starostí dost a odložil to :-D )

Ještě přidávám seznam řešení, kde jsou všechny proměnné nenulové :

474811*8=3798488
484811*8=3878488
494811*8=3958488
499811*8=3998488
514821*8=4118568
519821*8=4158568
529821*8=4238568
539821*8=4318568
974871*8=7798968
984871*8=7878968
994871*8=7958968
999871*8=7998968
974622*8=7796976
984622*8=7876976
994622*8=7956976
999622*8=7996976
514816*8=4118528
519816*8=4158528
529816*8=4238528
539816*8=4318528
974866*8=7798928
984866*8=7878928
994866*8=7958928
999866*8=7998928
974617*8=7796936
984617*8=7876936
994617*8=7956936
999617*8=7996936

Zřejmě veškeré možné výsledky, kde se nevyskytne nula. Nerespektuje to požadavek, že neznámá může nabývat jen jednu hodnotu. Vypadá to, že je těch možností málo, ale asi to bude správně. Nezkoušel jsem to, ale pokud by se ve sčítaném čísle nějaká hodnota změnila jen o jednu (přičemž už nebude číslo v některé z vypsaných možností), ve výsledku se někde objeví nula...

do C prekladaca nech si to strci sam kto chce :) DOba vypoctu bude radovo desatiny sekundy. Doba programovania par minut :)

for(int i=0;i<1000000;i++)
{
 int x=8*i;
 if((i/100)%10 == x%10 && (i/100)%10 == (x/1000)%10 && (i/100000)%10 == (x/100)%10 && (i/10000)%10 == (x/100000)%10)
  printf("DOTAZY=%06d, PORADNA=%07d\n", i, x);
}

P.S. mne to vypisalo tieto riesenia
DOTAZY=000000, PORADNA=0000000
DOTAZY=000005, PORADNA=0000040
DOTAZY=000010, PORADNA=0000080
DOTAZY=000254, PORADNA=0002032
DOTAZY=000259, PORADNA=0002072
DOTAZY=005000, PORADNA=0040000
DOTAZY=005005, PORADNA=0040040
DOTAZY=005010, PORADNA=0040080
DOTAZY=005254, PORADNA=0042032
DOTAZY=005259, PORADNA=0042072
DOTAZY=015000, PORADNA=0120000
DOTAZY=015005, PORADNA=0120040
DOTAZY=015010, PORADNA=0120080
DOTAZY=015254, PORADNA=0122032
DOTAZY=015259, PORADNA=0122072
DOTAZY=025000, PORADNA=0200000
DOTAZY=025005, PORADNA=0200040
DOTAZY=025010, PORADNA=0200080
DOTAZY=025254, PORADNA=0202032
DOTAZY=025259, PORADNA=0202072
DOTAZY=460050, PORADNA=3680400
DOTAZY=460055, PORADNA=3680440
DOTAZY=460060, PORADNA=3680480
DOTAZY=470050, PORADNA=3760400
DOTAZY=470055, PORADNA=3760440
DOTAZY=470060, PORADNA=3760480
DOTAZY=474801, PORADNA=3798408
DOTAZY=474806, PORADNA=3798448
DOTAZY=474811, PORADNA=3798488
DOTAZY=480050, PORADNA=3840400
DOTAZY=480055, PORADNA=3840440
DOTAZY=480060, PORADNA=3840480
DOTAZY=484801, PORADNA=3878408
DOTAZY=484806, PORADNA=3878448
DOTAZY=484811, PORADNA=3878488
DOTAZY=485050, PORADNA=3880400
DOTAZY=485055, PORADNA=3880440
DOTAZY=485060, PORADNA=3880480
DOTAZY=490050, PORADNA=3920400
DOTAZY=490055, PORADNA=3920440
DOTAZY=490060, PORADNA=3920480
DOTAZY=494801, PORADNA=3958408
DOTAZY=494806, PORADNA=3958448
DOTAZY=494811, PORADNA=3958488
DOTAZY=495050, PORADNA=3960400
DOTAZY=495055, PORADNA=3960440
DOTAZY=495060, PORADNA=3960480
DOTAZY=499801, PORADNA=3998408
DOTAZY=499806, PORADNA=3998448
DOTAZY=499811, PORADNA=3998488
DOTAZY=500065, PORADNA=4000520
DOTAZY=500070, PORADNA=4000560
DOTAZY=504816, PORADNA=4038528
DOTAZY=504821, PORADNA=4038568
DOTAZY=505065, PORADNA=4040520
DOTAZY=505070, PORADNA=4040560
DOTAZY=509816, PORADNA=4078528
DOTAZY=509821, PORADNA=4078568
DOTAZY=514816, PORADNA=4118528
DOTAZY=514821, PORADNA=4118568
DOTAZY=515065, PORADNA=4120520
DOTAZY=515070, PORADNA=4120560
DOTAZY=519816, PORADNA=4158528
DOTAZY=519821, PORADNA=4158568
DOTAZY=525065, PORADNA=4200520
DOTAZY=525070, PORADNA=4200560
DOTAZY=529816, PORADNA=4238528
DOTAZY=529821, PORADNA=4238568
DOTAZY=539816, PORADNA=4318528
DOTAZY=539821, PORADNA=4318568
DOTAZY=974617, PORADNA=7796936
DOTAZY=974622, PORADNA=7796976
DOTAZY=974866, PORADNA=7798928
DOTAZY=974871, PORADNA=7798968
DOTAZY=984617, PORADNA=7876936
DOTAZY=984622, PORADNA=7876976
DOTAZY=984866, PORADNA=7878928
DOTAZY=984871, PORADNA=7878968
DOTAZY=994617, PORADNA=7956936
DOTAZY=994622, PORADNA=7956976
DOTAZY=994866, PORADNA=7958928
DOTAZY=994871, PORADNA=7958968
DOTAZY=999617, PORADNA=7996936
DOTAZY=999622, PORADNA=7996976
DOTAZY=999866, PORADNA=7998928
DOTAZY=999871, PORADNA=7998968
Asi by si mal zadefinovat ze sa cifry nesmu opakovat, ale to sa mi uz nechce robit :)

Pekné riešenie. :-)

Doplním podmienku, že cifry sa nemôžu opakovať:

#include <stdio.h>

int main() {
  for (int i = 100000; i < 1000000; ++i) {
    int x = 8 * i;
    if (i/100%10 == x%10 && i/100%10 == x/1000%10 && i/100000%10 == x/100%10 && i/10000%10 == x/100000%10) {
      int bitmask = 1<<i/100000%10|1<<i/10000%10|1<<i/1000%10|1<<i/100%10|1<<i/10%10|1<<i/1%10|1<<x/1000000%10|1<<x/10000%10|1<<x/10%10;
      int missing = 0;
      for (int j = 0; j < 10; ++j)
        if ((bitmask&(1<<j)) == 0 && ++missing > 1)
            break;
      if (missing == 1)
        printf("DOTAZY=%06d, PORADNA=%07d\n", i, x);
    }
  }
  return 0;
}

Edit: Vypíše to:

DOTAZY=509816, PORADNA=4078528
DOTAZY=509821, PORADNA=4078568

este preistotu ti dam priklad: ked chcem z cisla x=123456
napriklad 3.cifru zprava, tak vydelim (operator delenie /) cislom 100, ziskam 1234 (len cele cislo pretoze oba operatory boli typ int). Potom urobim modulo (zvysok po deleni, operator %) cislom 10, a ziskam cifru 4.
Takze napr. (i/1000)%10 je 4.cifra zprava z cisla v premennej i, alebo i%10 je posledna cifra premennej i, apod.
P.S. tieto operacie a aj bitove operacie su VELMI RYCHLE. Dnesne CPU ich vedia urobit niekolko (aj 2-4) naraz v jednom jadre (paralelizuje si to jadro samo) kazdy takt. takze kludne aj 4*3 miliardy takych operacii za sekundu, kazde jadro. Naproti tomu operacie so stringami apod. su dost neefektivne ptz alokuju a kopiruju pamat atd. kludne aj 10000x pomalsie hlavne vo Windows kde MS alokacia pamate trva celu vecnost :-)

<< je bitovy posun dolava, 1<<0 je 1, 1<<1 je 10 binarne, takze 2. 1<<2 je 100 binarne, takze 4. Atd.

| je operacia bitove OR, takze napr. 100binarne OR 1binarne je 101binarne.

& je operacia bitove AND, da sa pouzit aj na testovanie bitu. Napr. 101binarne AND 100binarne = 100binarne, je nenulove tak to znamena ze 3.bit zprava bol 1.
001binarne AND 100binarne = 0, to znamena ze 3.bit zorava bol 0.

Programovanie neni o pocitoch ani ocakavaniach ale o absolutne preciznych definiciach a priebehoch.

for(neco1;podmienka;neco2) Command;
je presne a precizne difinovane ako toto:

neco1 -> if podmienka -> Command -> neco2 -|
        ^----------------------------------|

Z toho obrazka vyplyva napr. aj to ze ak podmienka nevyhovuje hned na zaciatku tak sa nevykonna Command ani raz. A aj to ze je uplne jedno ci napises do neco2 ++ pred alebo po alebo ci tam das i+=1 mozes tam dat dokonca aj rotacie a aj viac veci naraz prekladacu je to uplne fuk on to proste vykona vsetko to co tam nacpes do neco2 v spravnom okamziku.

P.S> vpodstate
for(neco1;podmienka;neco2) Command;
je uplne stejne jak
for(neco1;podmienka;) { Command; neco2; }
aj to druhe je korektne a dovolene :)

P.S.2. rozdiel medzi i++ a ++i by tam bol len vtedy ak by si chcel menit v tom "neco2" viac veci (menit zaroven i a aj nejake ine z), napr. by si tam napisal z = ++i tak by to znamenalo i+=1; z=i. Ak by si napisal z=i++ tak by to znamenalo z=i; i+=1, a to je rozdiel.

Zpět do poradny Odpovědět na původní otázku Nahoru