Sztuczki i haczyki II – errata
2008-06-09 by muczachanDla czytających z RSS-a, pojawił się poprawiony tekst.
Opowieści rekrutacyjne
Dla czytających z RSS-a, pojawił się poprawiony tekst.
Poprzednio było o konieczności uważania na optymalizację, dzisiaj o kolejności wykonywania działań. Notacja skrócona, ale tym razem chyba jasna. ‘x’ jest globalne.
F() = x++; return 
G() = x++; return 
H() = x++; return 
Jaki będzie wynik x=1; return F() * (G() + H())? Bez jakiejkolwiek optymalizacji, tym haczykiem proszę się nie przejmować.
a) w C/C++;
b) Java
c) C#.
Zadanie dodatkowe: co kompilator z czymś takim zazwyczaj robi?
Zadanie z gwiazdką: kiedy a+(b+c) będzie różne od (a+b)+c?
Jesteś recepcjonistą w dość nietypowym hotelu. Nie dość, że ma on nieskończoną liczbę pokojów, to jeszcze wszystkie one są zajęte. Ale z pewnością sobie poradzisz z poniższymi zadaniami, w końcu goście hotelowi też są nietypowi i od razu wykonują wszelkie polecenia wydane przez głośniki interkomu umieszczone w każdym pokoju.
a) Przyjechał samochód z pięcioma turystami. Jak ich umieścić w hotelu?
b) Przyjechał bus z nieskończoną liczbą turystów. Jak tych umieścić w hotelu?
c) Przyjechała nieskończona liczba busów, w każdym nieskończenie wielu turystów. Jak ich porozmieszczać?
Wszystko, oczywiście, jest wykonalne.
Co poniższe wypisze:
int i = 0;
cout << ++i << ++i << ++i << endl;
i = 0;
cout << i++ << i++ << i++ << endl;
Twórcze rozwinięcie poprzedniej sugestii (by Kleofas).
W innej wersji:
i=0;
print ++i;
print i++;
Mamy sobie ciasto. Czekoladowe. Z lukrem. Bardzo ważne że z lukrem. Ciasto było wypiekane w prostokątnej blasze. Więc też jest prostokatne. Oraz czekoladowe. I z lukrem. Lukier jest bardzo ważny. Niestety jakiś złoczyńca wyciął sobie kawałek z tego ciasta. Prostokątny kawałek. W przekroju, znaczy. Ale całkiem ładnie wyciął. Pionowo. I nie za blisko ścianek, żeby ładna dziura została. Prostokątna.
I jak tu teraz podzielić to ciasto na pół, żeby dokładnie było? I sprawiedliwie. Bo lukier jest bardzo ważny. Jednym cięciem podzielić.
Czym się różni ++i od i++. (Podpowiedziene przez rahna.)
Wracając do piratów z poprzedniej zagadki:
Słabo poszło. 6 piratów i tylko jedna, niepodzielna, złota moneta. Starym zwyczajem najstarszy z nich proponuje jakiś podział łupu, po czym wszyscy głosują nad jego przyjęciem. Najstarszy ma również głos rozstrzygający jeśli zachodzi potrzeba. Jeśli plan został odrzucony, proponujący zostaje zabity a obecnie najstarszy proponuje swój plan.
W tym zadaniu pirat jest istotą doskonale logiczną, najwyżej ceni sobie własne życie, na drugim miejscu mamonę, a na końcu jest koszenie konkurencji. Starszeństwo jest dobrze określone, nie ma nieporozumień.
Jaki plan podziału powinien zaproponować najstarszy pirat?
Chwilowo zabrakło mi inwencji. Znaczy, mnóstwo rzeczy jeszcze zostało, ale już bardziej specyficznych, a nie tyczących się ogółu programistów.
Jeśli jakieś sugestie, to bardzo proszę pisać.
5 piratów ma do podzielenia między siebie 100 złotych monet. Starym zwyczajem najstarszy z nich proponuje jakiś podział łupu, po czym wszyscy głosują nad jego przyjęciem. Najstarszy ma również głos rozstrzygający jeśli zachodzi potrzeba. Jeśli plan został odrzucony, proponujący zostaje zabity a obecnie najstarszy proponuje swój plan.
W tym zadaniu pirat jest istotą doskonale logiczną, najwyżej ceni sobie własne życie, na drugim miejscu mamonę, a na końcu jest koszenie konkurencji. Starszeństwo jest dobrze określone, nie ma nieporozumień.
Jaki plan podziału powinien zaproponować najstarszy pirat?
O co chodzi z Unikodem.