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
English