Programmētāji – kā būtu ar nelielu skriptu?

Tuvojas Ziemassvētki un līdz ar tiem arī ikgadējā apdāvināšanās. Populāra apdāvināšanas metode ir “Secret Santa” jeb latviskojot “nezināmais dāvinātājs”, “slepenais dāvinātājs” utt. Lai tas varētu notikt, ir jāveic izlozi, kuras rezultātā tiek noskaidrotas dāvinātāju un apdāvināmo kombinācijas. Citi to dara metot lapiņas ar vārdiem cepurē, citi uzraksta tam speciāli paredzētu skriptu. Te nu ir mans aicinājums programmētājiem. Padalamies ar skriptiem, kuri veiktu attiecīgo uzdevumu. Tālāk par dažiem nosacījumiem.

  • Lai gan reāls skripts veiktu arī izlozes rezultātu nosūtīšanu uz e-mail katram dāvinātājam, tas šoreiz nav vajadzīgs. Mani interesē algoritms/pieeja pašas izlozes veikšanai.
  • Noteiksim, ka izlozē piedalās 15 cilvēki.
  • Ir iespējams definēt pārus, kuri nedrīkst tikt pieļauti. Šis punkts ir noderīgs izlozēs radu vidū, lai, piemēram, izslēgtu iespējamību, ka izlozes rezultātā dāvanu saņem vīrs no sievas vai tamlīdzīgi (pāri lai apdāvinās paši savā starpā). Tātad, ja 15 cilvēku vidū ir Jānis un Līga un nevēlamies, lai Jānis dāvinātu dāvanu Līgai, tad nodefinējam šo kā aizliegtu pāri. Pieņemsim, ka 15 cilvēku vidū ir 3 šādi pāri.
  • Skripts izpildoties izdrukā pārus formātā: “X dāvina dāvanu Y”, kur X aizvietots ar dāvinātāja vārdu un Y ar saņēmēja vārdu.
  • Uz katru skripta palaišanu jāsaņem citādāku izlozes sarakstu (pēc nejaušības principa).
  • Protams, pats sevi izlozēt nedrīkst.

Skriptus var iesniegt dažādos veidos. Gan rakstot pa tiešo komentārā, gan Gist (Github), gan Pastebin, gan citos. Ja izmantojat kādu ārēju resursu, tad komentārā ielieciet saiti.

Paskatīsimies, cik dažādas ir mūsu pieejas tik vienkāršam uzdevumam. Valodu ierobežojuma nav (PHP, Python, Java, JavaScript, Go, … ). Variantus gaidīšu līdz 25.11 un tad sākšu apstiprināt komentārus. Līdz 25.11 visi komentāri būs moderācijā. 25.11 nopublicēšu arī savu variantu.

INFO!

Ja jau esi iesniedzis savu variantu, tad atkārtoti to darīt nevajag. Komentāri iet uz moderēšanu, tādēļ tos neredzēt līdz 25.11. Protams, ja gribi iesniegt labojumu, to vari darīt.

Šobrīd savus variantus iesnieguši:
Kaspars Foigts
Aigars Mahinovs
Mareks
Aleksis
briedis
Pēteris
Valters
Jānis
Terminalis Vulgaris
Aleksejs Ivanovs
Aija
Raitis Stengrevics
Gatis Tomsons
Ieva
Mr. V
Jānis Kiršteins
Fedja
Mārcis
Ramūns Usovs
Andris Buhanovskis

Iesniegtie varianti: http://endijs.com/2014/11/25/secret-santa-challenge-nosledzies/