Teraz trochę zabawy.
W bibliotece GNU C jest taka funkcja strfry().
Niewielu o niej słyszało, jeszcze mniej osób jej używa. Co robi? Ano miesza literki w tekście. Robi anagram.
Tekst "Ala ma kota" może przerobić na:
"a Aalakomt"
" oa lkaamAt"
"A mk oaltaa"
"omAaaal tk "
Wydaje się, że to taka funkcja "z przymrużeniem oka" i chyba jej twórcy też tak ją traktowali, napisali dla zabawy. Występuje jedynie w bibliotece GNU C.
No bo do czego, oprócz układania łamigłówek słownych może się przydać? Przecież nie do szyfrowania!
A jednak może się przydać, dla programisty może być świetną zabawą, a w dodatku wyprodukować coś pożytecznego.
Przed laty dla zabawy napisałem w C programik lotto.c. Prosty, tylko 38 linijek kodu, ale korzystał w dwuwymiarowej tablicy, generatora liczb pseudolosowych, sortu. Trochę pracy w jego napisanie i uruchomienie trzeba było włożyć.
Ostatnio, też dla zabawy, napisałem jego nową wersję używając strfry(). Robi to samo, ale skurczył się do 12 linijek kodu a samo generowanie szczęśliwej szóstki do jednej linijki:#define _GNU_SOURCE #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { unsigned char buf[50]; buf[50] = 0x00; int i; for(i=0;i<49;i++) buf[i]=i+1; buf[49] = 0x00; strfry(buf); for(i=0;i<6;i++) printf("%2d ", buf[i]); printf("\n"); }A więc jeśli grywasz w lotto, skopiuj program lotto.c,
skompiluj:
cc lotto.s -o lotto Uruchom: ./lotto