26 septembrie 2014

Probleme în Scheme: Bintree

Credeam că nu mă voi mai întâlni niciodată cu limbajul Scheme.... dar se pare că m-am înșelat.
Așadar, acest exercițiu (și mai multe exemple în curând):

A Bintree is defined using the following grammar:
Bintree ::= Int
::= ( Symbol Bintree Bintree )
where Int and Symbol are non-terminals representing an integer and a symbol, respectively.
1) Write the following Scheme procedures. These are constructors for Bintree structures.
interior-node : Symbol x Bintree x Bintree -> Bintree
leaf: Integer -> Bintree
A Bintree is constructed using these two constructor. As for example:
(interior-node 'a (interior-node 'b (leaf 10) (leaf 20)) (leaf 30)) 
generates the Bintree '(a (b 10 20) 30)
2. Write the following Scheme procedures. These are observers for Bintree structures.
interior-node?: Bintree -> Boolean
leaf?: Bintree -> Boolean
interior-node->left : Bintree -> Bintree
interior-node->right: Bintree -> Bintree
interior-node->name: Bintree -> Symbol
leaf->value: Bintree -> Int
The first two are predicates: 
  • " interior-node?" tests whether its argument is an interior node constructed using the procedure "interior-node".
  • "leaf?" tests whether its argument is a leaf node, constructed using the procedure "leaf"
The remaining procedures extract elements from the Bintree structure.
  • "interior-node->left" and "interior-node->right" return the left and right nodes of an interior node. They produce errors if the input is not an interior-node.
  • "interior-node->name" returns the 'symbol' used to construct an interior node, and generates error if any other type of node is given.
  • "leaf->value" returns the integer value used to construct the leaf node. It returns error otherwise.
3) Write a procedure "number-leaves" that takes as input a Bintree and also returns a Bintree. The Bintree it returns is identical to its input, except that in the leaf nodes the value is replaced by a number representing the order of the leaf, from left to right (starting with zero).
number-leaves: Bintree -> Bintree
Example:
(number-leaves (interior-node 'a (interior-node 'b (leaf 55) (leaf 77)) (leaf 11))
will produce a bintree equivalent to the following (interior-node 'a (interior-node 'b (leaf 0) (leaf 1)) (leaf 2))
Soluția mea AICI
fișierul de test AICI 

07 septembrie 2014

Cont nou de email cu Outlook = Big Fuss!!!

Iată ce se întâmplă când îți creezi un cont nou cu Outlook și selectezi din greșeală un an al nașterii care te face minor. Ooops, te anunță că ești minor și că ai nevoie de consimțământul părinților. Ok, am greșit, nu sunt minor, de fapt sunt adult. Ce urmează?

Really? 
Trebuie să-mi dau datele bancare către Microsoft ?! Văd bine?! Cât de prost poate fi cineva încât să parcurgă acest pas ?!
După ce că mi-am dat numele, adresa, data nașterii și nr. de telefon pentru a primi confirmarea pe el (!),  se pare că următorul pas este să trimit datele bancare, pentru a demonstra că sunt adult.

Ok, go back. Sunt tot minor, greșisem mai devreme. 
Chiar trebuie să obțin consimțământul unui părinte, accept. Mă loghez cu celălalt cont de Microsoft și mă pregătesc să citesc sub ce condiții „copilul” meu se poate bucura de acest serviciu minunat numit Outlook.


Apăs bucuroasă YES, făcându-mă deocamdată că nu văd o nouă aberație marca Microsoft. Voi fi taxată cu 50 cenți (taxă de caritate). Un serviciu de email care costă !!!!!!!! - dar orice pt copil, nu? Mai departe.....

Fail. Pentru a demonstra că sunt și un părinte adevărat, trebuie să fiu oficial în aceeași țară cu copilul. Și nu sunt. Părintele are în setările contului ca țară România, copilul minor încearcă să se înregistreze din SUA.
Dar ei nu se uită că totul se petrece de pe același IP, deci sunt „lângă copil” acum?!

Nu înțeleg cine a propus acest registration flow atât de complicat și aberant pentru un simplu serviciu de email, care vorba aia, îl ai în 2 pași de la yahoo sau oricare alt furnizor, cu minim de informații. Who cares about the age, parent consent și așa mai departe, într-o lume virtuală în care oricine poate avea orice căsuță poștală cu orice nume și setare whatsoever?! O lume virtuală care a fost construită pe minciună, dacă se poate numi așa.
Microsoft se dovedește a fi extrem de irealist cu restricțiile pe care le impune și chiar jenant în clipa în care cere informații despre cartea de credit. Câtă nesimțire să ai ca sa dai buzna în felul acesta în viața privată a unei persoane doar pentru un serviciu amarât de email?

Și acum, pentru a finaliza testarea, să urmăm același scenariu de creare a unui cont, cu atenție la data nașterii de data asta.

SURPRIZĂ!!!!

Se pare că m-am jucat destul azi, sau s-au plictisit de mine. Mi-am făcut prea multe conturi azi, nu?? 
Cred e gravă situația.. dar oricum, chiar dacă mergea, îmi pierise cheful de a-mi crea un nou cont cu Outlook.