<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Despre Adobe Romania &#187; Distracție</title>
	<atom:link href="http://myadobe.ro/category/distractie/feed/" rel="self" type="application/rss+xml" />
	<link>http://myadobe.ro</link>
	<description>(noi facem software, nu phone support, și ne place)</description>
	<lastBuildDate>Fri, 03 Feb 2012 15:29:03 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Pozeaza si castiga! :)</title>
		<link>http://myadobe.ro/2011/10/11/pozeaza-si-castiga/</link>
		<comments>http://myadobe.ro/2011/10/11/pozeaza-si-castiga/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 09:43:50 +0000</pubDate>
		<dc:creator>cmincu</dc:creator>
				<category><![CDATA[Adobiști]]></category>
		<category><![CDATA[Distracție]]></category>
		<category><![CDATA[Evenimente]]></category>

		<guid isPermaLink="false">http://myadobe.ro/?p=4428</guid>
		<description><![CDATA[Salut! Pentru ca vrem sa te intalnim si sa stam de vorba cu tine, participam si anul acesta la Angajatori de Top (28-29 Octombrie 2011) la Sala Palatului din Bucuresti. Anuntam venirea noastra prin cateva stickere colorate afisate in metrou pe linia albastra (Pipera &#8211; IMGB). Daca se intampla sa le vezi : … fa [...]]]></description>
			<content:encoded><![CDATA[<p>Salut!</p>
<p>Pentru ca vrem sa te intalnim si sa stam de vorba cu tine, participam si anul acesta la Angajatori de Top (28-29 Octombrie 2011) la Sala Palatului din Bucuresti. Anuntam venirea noastra prin cateva stickere colorate afisate in metrou pe linia albastra (Pipera &#8211; IMGB).</p>
<p><a href="http://myadobe.ro/wp-content/uploads/2011/10/campanie_angajatori-de-top-11.jpg"><img class="size-full wp-image-4429 alignright" title="Stickere Adobe Romania" src="http://myadobe.ro/wp-content/uploads/2011/10/campanie_angajatori-de-top-11.jpg" alt="" width="300" height="200" /></a></p>
<p>Daca se intampla sa le vezi <strong>:</strong></p>
<p>… fa o poza cu tine/prietenii tai langa ele</p>
<p>… uploadeaza poza pe pagina noastra de <a href="http://www.facebook.com/AdobeRomania">Facebook </a></p>
<p>… primeste cele mai multe like-uri (pana pe 26 Octombrie cand inchidem concursul) si<strong> castiga un premiu</strong> din partea noastra: un tricou cu Mo si Foca si o licenta Creative Suite CS 5 (la alegere intre Design sau Web).</p>
<p>Te asteptam sa il ridici de la standul Adobe in cadrul evenimentului (daca esti din Bucuresti) sau ti-l trimitem noi prin posta.</p>
<p>Ti-ai pregatit aparatul foto? <img src='http://myadobe.ro/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http://myadobe.ro/2011/10/11/pozeaza-si-castiga/&amp;layout=standard&amp;show_faces=0&amp;width=450&amp;action=like&amp;colorscheme=light&amp;font=arial" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:25px"></iframe><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmyadobe.ro%2F2011%2F10%2F11%2Fpozeaza-si-castiga%2F&amp;title=Pozeaza%20si%20castiga%21%20%3A%29" id="wpa2a_2"><img src="http://myadobe.ro/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://myadobe.ro/2011/10/11/pozeaza-si-castiga/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Adobe Work &amp; Play – DEV 2 Problema 2</title>
		<link>http://myadobe.ro/2011/05/28/adobe-work-play-%e2%80%93-dev-2-problema-2/</link>
		<comments>http://myadobe.ro/2011/05/28/adobe-work-play-%e2%80%93-dev-2-problema-2/#comments</comments>
		<pubDate>Sat, 28 May 2011 07:01:35 +0000</pubDate>
		<dc:creator>civascu</dc:creator>
				<category><![CDATA[Adobiști]]></category>
		<category><![CDATA[Distracție]]></category>
		<category><![CDATA[Echipa]]></category>
		<category><![CDATA[Educație]]></category>
		<category><![CDATA[Evenimente]]></category>
		<category><![CDATA[Muncă]]></category>
		<category><![CDATA[adobe]]></category>
		<category><![CDATA[development geeky]]></category>
		<category><![CDATA[eveniment]]></category>
		<category><![CDATA[stagiar]]></category>
		<category><![CDATA[stagii]]></category>

		<guid isPermaLink="false">http://myadobe.ro/?p=3821</guid>
		<description><![CDATA[Tema: Se dă un graf orientat aciclic cu N noduri și M arce. Fie K numărul de drumuri distincte de la nodul 1 la nodul N. Se cere restul obținut prin împărțirea lui K la 2011. Programul primește datele de intrare din fișierul &#8220;drumuri.in&#8221;, ce conține pe prima linie numerele N si M, iar pe [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Tema:</strong></p>
<p>Se dă un graf orientat aciclic cu N noduri și M arce.<br />
Fie K numărul de drumuri distincte de la nodul 1 la nodul N. Se cere restul obținut prin împărțirea lui K la 2011.</p>
<p>Programul primește datele de intrare din fișierul &#8220;drumuri.in&#8221;, ce conține pe prima linie numerele N si M, iar pe urmatoarele M linii câte două numere separate prin spațiu, &#8220;x y&#8221;, reprezentând câte un arc din graf (de la nodul x la nodul y). În fișierul &#8220;drumuri.out&#8221; trebuie afișat numărul cerut &#8211; restul obținut prin împărțirea numărului de drumuri la 2011.</p>
<p><span id="more-3821"></span></p>
<p><strong>Restricții și precizări</strong>:</p>
<ul>
<li>2&lt;=N&lt;=1.000.000.</li>
<li>1&lt;=M&lt;=1.000.000.</li>
<li>Între două noduri pot exista mai multe arce.</li>
</ul>
<p><strong>Exemplul 1:</strong></p>
<p><strong> </strong>Fișier de intrare: drumuri.in:</p>
<blockquote>
<pre>4 5
1 2
1 3
3 2
3 2
2 4</pre>
</blockquote>
<p>Fișier de iesire: drumuri.out:</p>
<blockquote>
<pre>3</pre>
</blockquote>
<p><em>Explicație</em>: sunt 3 drumuri: 1-&gt;3-&gt;2-&gt;4, 1-&gt;3-&gt;2-&gt;4 (exista 2 arce 3-&gt;2), 1-&gt;2-&gt;4.</p>
<p><strong>Exemplul 2:</strong></p>
<p>Fișier de intrare: drumuri.in:</p>
<blockquote>
<pre>3 2
1 2
3 1</pre>
</blockquote>
<p>Fișier de ieșire: drumuri.out:</p>
<blockquote>
<pre>0</pre>
</blockquote>
<p><em>Explicație</em>: nu există nici un drum de la nodul 1 la nodul 3 (graful este orientat).</p>
<p><strong>Barem:<br />
</strong></p>
<ul>
<li>3p &#8211; descrierea în README.txt a algoritmului, complexitate, de ce functionează &#8211; se acordă maximul doar dacă complexitatea este cea optimă;</li>
<li>2p &#8211; funcționarea pe exemple precum cele din enunț;</li>
<li>
<div>5p &#8211; Cod funcțional de complexitate optimă;</div>
<ul>
<li>+/- 1p Coding style;</li>
<li>-2p Complexitate neoptimă;</li>
<li>-4p Complexitate total neoptimă;</li>
</ul>
</li>
<li>Punctajul este intre 0-10.</li>
</ul>
<p><strong>Update:</strong></p>
<ul>
<li>Mai intâi sortăm topologic nodurile grafului.</li>
<li>În continuare construim pas cu pas numarul de drumuri de la nodul 1 până la fiecare nod care se află după el, în urma sortării topologice:
<ul>
<li> Dacă nodul N este inaintea nodului 1, atunci rezultatul este 0.</li>
<li>De la nodul 1 până la el insuși există un singur drum (drumul fără niciun arc).</li>
<li>De la nodul 1 până la următorul (conform ordinii date de sortare) există un număr de drumuri egal cu numărul de arce dintre cele doua noduri.</li>
<li>Pentru un nod oarecare X, având calculate numerele de drumuri de la nodul 1 până la nodurile precedente lui X, fiecare arc de forma (Y, X) care intră în X, adaugă D drumuri, unde D este numărul de drumuri până la Y (fiecare D este cunoscut, pentru că orice nod Y pentru care există arc (Y, X) este înaintea lui X dupa sortarea topologică).</li>
</ul>
</li>
<li>În momentul în care s-a calculat numărul de drumuri pentru nodul N, se poate afișa valoarea cerută. Întrucât numărul de drumuri până la un nod poate fi foarte mare, numerele intermediare din cadrul soluției sunt considerate modulo 2011.</li>
</ul>
<p>Complexitate: O(N+M) (atât sortarea topologică, cât și a doua parte au aceeași complexitate).</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http://myadobe.ro/2011/05/28/adobe-work-play-%e2%80%93-dev-2-problema-2/&amp;layout=standard&amp;show_faces=0&amp;width=450&amp;action=like&amp;colorscheme=light&amp;font=arial" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:25px"></iframe><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmyadobe.ro%2F2011%2F05%2F28%2Fadobe-work-play-%25e2%2580%2593-dev-2-problema-2%2F&amp;title=Adobe%20Work%20%26%23038%3B%20Play%20%E2%80%93%20DEV%202%20Problema%202" id="wpa2a_4"><img src="http://myadobe.ro/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://myadobe.ro/2011/05/28/adobe-work-play-%e2%80%93-dev-2-problema-2/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Adobe Work &amp; Play &#8211; Teste runda 1</title>
		<link>http://myadobe.ro/2011/05/14/adobe-work-play-teste-runda-1/</link>
		<comments>http://myadobe.ro/2011/05/14/adobe-work-play-teste-runda-1/#comments</comments>
		<pubDate>Sat, 14 May 2011 07:03:32 +0000</pubDate>
		<dc:creator>donac</dc:creator>
				<category><![CDATA[Adobiști]]></category>
		<category><![CDATA[Distracție]]></category>
		<category><![CDATA[Echipa]]></category>
		<category><![CDATA[Educație]]></category>
		<category><![CDATA[Evenimente]]></category>
		<category><![CDATA[development geeky]]></category>
		<category><![CDATA[eveniment]]></category>
		<category><![CDATA[stagiar]]></category>
		<category><![CDATA[stagii]]></category>

		<guid isPermaLink="false">http://myadobe.ro/?p=3623</guid>
		<description><![CDATA[Salut, Am pornit prima rundă de testare, iar problemele sunt acum pe blog. Pentru DEV-i: Avem 5 probleme, textul si baremele le găsești aici: Problema 1 Problema 2 Problema 3 Problema 4 Problema 5 Timpul de rezolvare si submitare a temelor este de 24 de ore. Pentru QE-i: Avem 2 probleme, textul si baremele le [...]]]></description>
			<content:encoded><![CDATA[<p>Salut,</p>
<p>Am pornit prima rundă de testare, iar problemele sunt acum pe blog.<br />
<span id="more-3623"></span><br />
Pentru DEV-i:</p>
<ul>
<li>Avem 5 probleme, textul si baremele le găsești aici:
<ul>
<li><a href="http://myadobe.ro/2011/05/14/adobe-work-play-dev-1-problema-1-2/">Problema 1</a></li>
<li><a href="http://myadobe.ro/2011/05/14/adobe-work-play-%E2%80%93-dev-1-problema-2/">Problema 2</a></li>
<li><a href="http://myadobe.ro/2011/05/14/adobe-work-play-%E2%80%93-dev-1-problema-3/">Problema 3</a></li>
<li><a href="http://myadobe.ro/2011/05/14/adobe-work-play-%E2%80%93-dev-1-problema-4/">Problema 4</a></li>
<li><a href="http://myadobe.ro/2011/05/14/adobe-work-play-%E2%80%93-dev-1-problema-5/">Problema 5</a></li>
</ul>
</li>
<li>Timpul de rezolvare si submitare a temelor este de <strong>24 de ore.</strong></li>
</ul>
<p>Pentru QE-i:</p>
<ul>
<li>Avem <a href="http://myadobe.ro/2011/05/13/adobe-work-play-qe-1-probleme/">2 probleme</a>, textul si baremele le găsești <a href="http://myadobe.ro/2011/05/13/adobe-work-play-qe-1-probleme/">aici</a></li>
<li>Timpul de rezolvare si submitare a temelor este de <strong>24 de ore. </strong></li>
</ul>
<p>Pentru UX-i:</p>
<ul>
<li>Avem <a href="http://myadobe.ro/2011/05/13/adobe-work-play-%E2%80%93-ux-1-probleme/">2 probleme</a>, textul si baremele le găsești <a href="http://myadobe.ro/2011/05/13/adobe-work-play-%E2%80%93-ux-1-probleme/">aici</a></li>
<li>Timpul de rezolvare si submitare a temelor este de <strong>72 de ore. </strong></li>
</ul>
<p>Ce urmează să se întâmple?</p>
<ul>
<li>În decursul zilelor următoare vom răspunde la toate întrebările trimise pe forum, în cel mai scurt timp;</li>
<li>Duminică vom posta soluțiile problemelor pentru DEV-i, împreună cu explicațiile rezolvărilor;</li>
<li>Ne trimiți rezolvarea prin mail la <a href="mailto:educatie@adobe.com">educatie@adobe.com</a> sau <a href="mailto:hr-romania@adobe.com">hr-romania@adobe.com</a>, sau  prin <a href="http://www.transfer.ro">www.transfer.ro</a>;</li>
<li>În două săptămâni vom posta rezultatele, deci urmărește-ne blogul ca să știi dacă ai fost selecționat;</li>
<li>Dacă nu ai timp să participi la runda unu, așteaptă runda a doua de pe 29 mai și mai exersează între timp.</li>
</ul>
<p>Urmărește-ne blogul ca să fii la curent!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http://myadobe.ro/2011/05/14/adobe-work-play-teste-runda-1/&amp;layout=standard&amp;show_faces=0&amp;width=450&amp;action=like&amp;colorscheme=light&amp;font=arial" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:25px"></iframe><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmyadobe.ro%2F2011%2F05%2F14%2Fadobe-work-play-teste-runda-1%2F&amp;title=Adobe%20Work%20%26amp%3B%20Play%20%26%238211%3B%20Teste%20runda%201" id="wpa2a_6"><img src="http://myadobe.ro/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://myadobe.ro/2011/05/14/adobe-work-play-teste-runda-1/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Adobe Work &amp; Play – DEV 1 Problema 3</title>
		<link>http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-3/</link>
		<comments>http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-3/#comments</comments>
		<pubDate>Sat, 14 May 2011 07:03:16 +0000</pubDate>
		<dc:creator>donac</dc:creator>
				<category><![CDATA[Adobiști]]></category>
		<category><![CDATA[Distracție]]></category>
		<category><![CDATA[Echipa]]></category>
		<category><![CDATA[Educație]]></category>
		<category><![CDATA[Evenimente]]></category>
		<category><![CDATA[development geeky]]></category>
		<category><![CDATA[eveniment]]></category>
		<category><![CDATA[stagiar]]></category>
		<category><![CDATA[stagii]]></category>

		<guid isPermaLink="false">http://myadobe.ro/?p=3566</guid>
		<description><![CDATA[Fie mulțimea A={1,2,3,..,n}, cu n&#62;0 și B o mulțime conținând perechi de elemente din A (B este inclusă în A×A), cu următoarea proprietate: pentru orice i ∈ {1,2,&#8230;,n-1}, (i,i+1) ∈ B. Scrieți un algoritm de complexitate optimă care determină dacă exista o permutare a tuturor elementelor lui B, fie aceasta {(x1,y1),(x2,y2),..,(xm,ym)} astfel încât y1=x2,y2=x3,&#8230;și ym-1=xm. [...]]]></description>
			<content:encoded><![CDATA[<p>Fie mulțimea A={1,2,3,..,n}, cu n&gt;0 și B o mulțime conținând perechi de elemente din A (B este inclusă în A×A), cu următoarea proprietate: pentru orice i <span style="font-family: Cambria Math">∈</span> {1,2,&#8230;,n-1}, (i,i+1) <span style="font-family: Cambria Math">∈</span> B.<br />
<span id="more-3566"></span><br />
Scrieți un algoritm de complexitate optimă care determină dacă exista o permutare a tuturor elementelor lui B, fie aceasta {(x<sub>1</sub>,y<sub>1</sub>),(x<sub>2</sub>,y<sub>2</sub>),..,(x<sub>m</sub>,y<sub>m</sub>)} astfel încât y<sub>1</sub>=x<sub>2</sub>,y<sub>2</sub>=x<sub>3</sub>,&#8230;și y<sub>m-1</sub>=x<sub>m</sub>.</p>
<p>Programul primește la intrare un fișier ce conține:</p>
<ul>
<li>pe prima linie n, numărul de elemente din A</li>
<li>pe a doua linie m, numărul de elemente din B</li>
<li>pe fiecare din următoarele m linii câte două numere din {1,2,..,n} separate printr-un spațiu care reprezintă cele m perechi ale lui B.</li>
</ul>
<p>La ieșire, programul afișează pe consolă caracterul &#8220;A&#8221; dacă există o permutare ca în enunț sau caracterul &#8220;F&#8221;, în caz contrar.</p>
<p><span style="font-size: 15px"><strong>Exemplul 1:</strong></span></p>
<p>Fișierul de intrare data.in conține:</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span style="color: black">4<br />
5<br />
1 2<br />
2 3<br />
3 4<br />
1 3<br />
4 1<br />
</span></p>
<p>Date ieșire (pe consolă):</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span>A<br />
</span></p>
<p><span style="color: black;font-size: 11pt"><strong>Exemplul 2:</strong><br />
</span>Fișierul de intrare data.in conține:</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span style="color: black">4<br />
6<br />
1 2<br />
2 3<br />
3 4<br />
1 3<br />
4 1<br />
4 2<br />
</span></p>
<p>Date ieșire (pe consolă):</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span>F<br />
</span></p>
<p><strong>Barem:<br />
</strong></p>
<ul>
<li>3p &#8211; descrierea în README.txt a algoritmului, complexitate, de ce functionează &#8211; se acordă maximul doar dacă complexitatea este cea optimă;</li>
<li>2p &#8211; funcționarea pe exemple precum cele din enunț;</li>
<li>
<div>5p &#8211; Cod funcțional de complexitate optimă;</div>
<ul>
<li>+/- 1p Coding style;</li>
<li>-2p Complexitate neoptimă;</li>
<li>-4p Complexitate total neoptimă;</li>
</ul>
</li>
<li>Punctajul este intre 0-10.</li>
</ul>
<p>&nbsp;</p>
<p><span style="color: black;font-size: 15pt"><strong>Soluție:</strong></span><br />
<strong>Algoritm:</strong></p>
<p>Se consideră graful orientat G=(A,B) cu vârfurile elementele lui A și muchii elementele lui B (pentru fiecare pereche (x,y) din B considerăm că avem muchia x&#8211;y). Condițiile impuse asupra lui B spun că graful este neorientat și că este conex. Problema se transformă în a determina dacă în G avem o cale x<sub>1</sub>-&gt;x<sub>2</sub>-&gt;&#8230;-&gt;x<sub>m</sub>-&gt;y<sub>m</sub> care trece prin toate muchiile grafului exact o data. Avem de determinat dacă G conține ceea ce se numește o <em>cale euleriana</em> (cale care trece prin toate muchiile grafului).</p>
<p>Pentru un graf care conține o astfel de cale avem următoarele proprietăți:</p>
<ul>
<li> orice nod X care nu este cel de plecare sau de sosire avem in(X) = out(X) pentru că altfel calea fie s-ar opri în X dacă in(X)&gt;out(X) sau nu ar conține unele muchii care pleacă din X dacă in(X) &lt; out(X). Altfel spus, de fiecare dată când calea intăa pe o muchie în nodul X, iese pe o alta muchie.</li>
<li> daca punctul de start (S) nu este cel de terminare (T) a căii, atunci: out(S) &#8211; in(S) = 1 si out(T) &#8211; in(T) = -1. Aceasta trebuie să fie adevărat deorece în afară de muchia de start care pleaca din S, de fiecare dată ulterioara când calea ne duce în S, vom pleca din S pe altă muchie. Analog pentru T.</li>
<li> daca S=T, atunci vom avea ca și pentru celelalte noduri in(S) = out(S), ca mai sus. (în acest caz avem un circuit eulerian)</li>
</ul>
<p>Argumentarea că condițiile de mai sus sunt și suficiente. Dacă pentru un nod oarecare X notăm  F(X) = out(X) &#8211; in(X), aceasta ar însemna:</p>
<ul>
<li> daca S&lt;&gt;T, avem F(X)=0, pentru X&lt;&gt;S si X&lt;&gt;T, F(S)=1 si F(T)=-1</li>
<li> dacă S=T, F(X)=0 pentru orice nod.</li>
</ul>
<p>Pentru a demonstra afirmația aceasta vom arăta cum construim o astfel de cale in graful conex G. Dacă ne aflăm în primul caz (cu S&lt;&gt;T) în care avem F(S)=1 și F(T)=-1 procedăm astfel. Pornim din S și luăm unul din vecinii lui X1, încercând, dacă se poate, să evitam nodul T. Stergem muchia S-&gt;X1. Cum F(X1)=0, rezultă că avem și o muchie mai departe, care iese din X1 (la fel, încercăm să evitam nodul T, dacă se poate) Fie aceasta X1-&gt;X2. Ștergem și această muchie. La fel, cum inițial F(X2)=0, trebuie să avem o muchie să ieșim din nodul X2. Se repetă procedeul, iar la un moment ajungem în nodul X<sub>i</sub>. Chiar dacă s-a mai trecut prin acest nod, prin ștergerea muchilor de intrare și ieșire, am micșorat atât in-ul cât și out-ul său cu aceeași valoare. Deci înainte de ștergerea muchiei care ne-a dus la el tot avem F(X<sub>i</sub>)=0 (și pentru graful cu muchiile șterse). De aceea, rezultă că avem și muchie de ieșire. Repetăm procedeul până când rămânem într-un nod. Acesta trebuie să fie T ca mai sus. Analog pentru cazul S=T (se pornește cu orice nod din graf).<br />
<strong> </strong></p>
<p><strong>Implementare Java în O(m) (unde m este numărul de muchii)</strong></p>
<pre>public class Pair {
   //auxiliary class describing an edge
   public Integer first;
   public Integer second;
   public Pair(Integer first, Integer second) {
     this.first = first;
     this.second = second;
   }
 }</pre>
<pre> public static boolean <strong>hasEulerianPath</strong>(int n, List&lt;Pair&gt; b) {
   Integer[] F = new Integer[n + 1];
   //compute for each node F[i] = out(i) - in(i)
   for (Pair p: b) {
     F[p.first]++;
     F[p.second]--;
   }
   int start = 0;
   int end = 0;
   for (int i = 1; i &lt;= n; i++) {
     switch (F[i]) {
       case 0:
         break;
       case 1:
         if (start == 0) {
           start = i;
         } else {
           return false; // we have at least 2 nodes with F[i] = 1
         }
         break;
       case -1:
         if (end == 0) {
           end = i;
         }
         else {
            return false; // we have at least 2 nodes with F[i] = -1
         }
       default:
         return false;
     }
   }
   return true;
 }</pre>
<iframe src="http://www.facebook.com/plugins/like.php?href=http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-3/&amp;layout=standard&amp;show_faces=0&amp;width=450&amp;action=like&amp;colorscheme=light&amp;font=arial" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:25px"></iframe><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmyadobe.ro%2F2011%2F05%2F14%2Fadobe-work-play-%25e2%2580%2593-dev-1-problema-3%2F&amp;title=Adobe%20Work%20%26amp%3B%20Play%20%E2%80%93%20DEV%201%20Problema%203" id="wpa2a_8"><img src="http://myadobe.ro/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-3/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Adobe Work &amp; Play &#8211; DEV 1 Problema 1</title>
		<link>http://myadobe.ro/2011/05/14/adobe-work-play-dev-1-problema-1-2/</link>
		<comments>http://myadobe.ro/2011/05/14/adobe-work-play-dev-1-problema-1-2/#comments</comments>
		<pubDate>Sat, 14 May 2011 07:02:29 +0000</pubDate>
		<dc:creator>donac</dc:creator>
				<category><![CDATA[Adobiști]]></category>
		<category><![CDATA[Distracție]]></category>
		<category><![CDATA[Echipa]]></category>
		<category><![CDATA[Educație]]></category>
		<category><![CDATA[Evenimente]]></category>
		<category><![CDATA[development geeky]]></category>
		<category><![CDATA[eveniment]]></category>
		<category><![CDATA[stagiar]]></category>
		<category><![CDATA[stagii]]></category>

		<guid isPermaLink="false">http://myadobe.ro/?p=3652</guid>
		<description><![CDATA[Pe multe forum-uri există problema nesincerității unora dintre participanți. S-a facut un studiu pe forumul X, în care fiecare persoană a fost rugată să spună care dintre ceilalți membri pot fi considerați mincinoși (mincinoșii spun întotdeauna minciuni iar cei ce spun adevărul nu mint niciodată). Nu toată lumea a raspuns. Utilizând datele din fișierul de [...]]]></description>
			<content:encoded><![CDATA[<p>Pe multe forum-uri există problema nesincerității unora dintre participanți. S-a facut un studiu pe forumul X, în care fiecare persoană a fost rugată să spună care dintre ceilalți membri pot fi considerați mincinoși (mincinoșii spun întotdeauna minciuni iar cei ce spun adevărul nu mint niciodată). Nu toată lumea a raspuns.<span id="more-3652"></span></p>
<p>Utilizând datele din fișierul de intrare, stabiliți dimensiunea grupului de mincinoși și a celui de oameni care spun adevarul. Dacă aceasta nu este posibil, afișați acest fapt.</p>
<p>Programul primește 2 parametri de intrare: numele fișierului de input și numele fișierului de output.</p>
<p>Fișierul de intrare are structura:</p>
<ul>
<li>număr_persoane_care_au_răspuns</li>
<li>numele_persoana_1_care_răspunde număr_mincinoși_raportați_1</li>
<li>numele_mincinos 1_1</li>
<li>numele_mincinos 1_2</li>
<li>…</li>
<li>numele_persoana_2_care_răspunde număr_mincinoși_raportați_2</li>
<li>numele_mincinos_2_1</li>
<li>numele_mincinos_2_2</li>
<li>…</li>
<li>numele_persoana_n_care_răspunde număr_mincinoși_raportați_n</li>
<li>…</li>
</ul>
<p>Fișierul de ieșire conține 2 numere:</p>
<ul>
<li>mărimea_celui_mai_mare_grup mărimea_grupului_mai_mic în cazul în care avem soluție</li>
<li>sau -1 pe prima linie dacă nu exista soluție.</li>
</ul>
<p><span style="color: black;font-size: 11pt"><strong>Exemplul 1</strong><br />
</span>Fișierul de intrare in.data out.data conține:</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span style="color: black">5<br />
A 1<br />
B<br />
B 1<br />
C<br />
D 1<br />
B<br />
C 1<br />
B<br />
E 2<br />
D<br />
A<br />
</span></p>
<p>Explicație: 5 persoane au răspuns:</p>
<ul>
<li>A spune că B e mincinos;</li>
<li> B spune că C e mincinos;</li>
<li>D că B e mincinos;</li>
<li>C că B minte și</li>
<li>E că D și A mint.</li>
</ul>
<p>out.data conține:</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span style="color: black">3 2<br />
</span></p>
<p><span style="color: black;font-size: 11pt"><strong>Exemplul 2</strong><br />
</span>Fișierul de intrare in.data conține:</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span style="color: black">2<br />
A 1<br />
B<br />
C 2<br />
B<br />
A<br />
</span></p>
<p>Explicație: 2 persoane au raspuns:</p>
<ul>
<li>A , care spune ca B minte;</li>
<li>C, care spune ca atat B, cat si A sunt mincinosi.</li>
</ul>
<p>out.data conține:</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span style="color: black">-1<br />
</span></p>
<p><strong>Barem:<br />
</strong></p>
<ul>
<li>3p &#8211; descrierea în README.txt a algoritmului, complexitate, de ce functionează &#8211; se acordă maximul doar dacă complexitatea este cea optimă;</li>
<li>2p &#8211; funcționarea pe exemple precum cele din enunț;</li>
<li>
<div>5p &#8211; Cod funcțional de complexitate optimă;</div>
<ul>
<li>+/- 1p Coding style;</li>
<li>-2p Complexitate neoptimă;</li>
<li>-4p Complexitate total neoptimă;</li>
</ul>
</li>
<li>Punctajul este intre 0-10.</li>
</ul>
<p>&nbsp;</p>
<p><span style="color: black;font-size: 15pt"><strong>Soluție</strong></span></p>
<p><strong>Algoritm:</strong></p>
<p>1. Se construiește un graf în care fiecare nod este un om și un arc de la x-&gt;y inseamnă că X a spus că Y minte.<br />
2. Se folosește BFS pt a &#8220;colora&#8221; toate nodurile în 2 culori.<br />
3. Daca s-a reușit colorarea înseamnă că avem un graf bipartit și putem împărți oamenii în 2 mulțimi ( bazate pe culoare).</p>
<p><strong>Implementare java:</strong></p>
<div style="text-align: left" dir="ltr">
<pre><span class="kw2">public</span> <span class="kw4">void</span> solve<span class="br0">(</span>HashMap<span class="sy0">&lt;</span>String, HashSet<span class="sy0">&lt;</span>String<span class="sy0">&gt;&gt;</span> liars, HashSet<span class="sy0">&lt;</span>String<span class="sy0">&gt;</span> knownPeople<span class="br0">)</span> <span class="br0">{</span>

        ArrayList<span class="sy0">&lt;</span>String<span class="sy0">&gt;</span> whiteListPeople = <span class="kw2">new</span> ArrayList<span class="sy0">&lt;</span>String<span class="sy0">&gt;</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
        ArrayList<span class="sy0">&lt;</span>String<span class="sy0">&gt;</span> queue = <span class="kw2">new</span> ArrayList<span class="sy0">&lt;</span>String<span class="sy0">&gt;</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
        HashMap<span class="sy0">&lt;</span>String, Integer<span class="sy0">&gt;</span> color = <span class="kw2">new</span> HashMap<span class="sy0">&lt;</span>String, Integer<span class="sy0">&gt;</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
        <span class="kw1">for</span> <span class="br0">(</span><span class="kw3">String</span> person : knownPeople<span class="br0">)</span>
            whiteListPeople.<span class="me1">add</span><span class="br0">(</span>person<span class="br0">)</span><span class="sy0">;</span>

        <span class="kw3">String</span> person = whiteListPeople.<span class="me1">get</span><span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span><span class="sy0">;</span>
        whiteListPeople.<span class="me1">remove</span><span class="br0">(</span>person<span class="br0">)</span><span class="sy0">;</span>
        queue.<span class="me1">add</span><span class="br0">(</span>person<span class="br0">)</span><span class="sy0">;</span>

        color.<span class="me1">put</span><span class="br0">(</span>person, <span class="nu0">0</span><span class="br0">)</span><span class="sy0">;</span>

        <span class="co1">// start BFS</span>
        <span class="kw1">while</span> <span class="br0">(</span>whiteListPeople.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">!</span>= <span class="nu0">0</span> || queue.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">!</span>= <span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span>
            <span class="co1">// pick one person from known persons and </span>add it to the toVisit queue</pre>
<pre>            person = <span class="kw2">null</span><span class="sy0">;</span>
            <span class="kw1">if</span> <span class="br0">(</span>queue.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span> <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">)</span>
                <span class="co1">// pick another element from the queue</span>
                person = queue.<span class="me1">get</span><span class="br0">(</span>queue.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span> - <span class="nu0">1</span><span class="br0">)</span><span class="sy0">;</span>
            <span class="kw1">else</span> <span class="br0">{</span>
                <span class="co1">// there are distinct components in the graph</span>
                person = whiteListPeople.<span class="me1">get</span><span class="br0">(</span><span class="nu0">0</span><span class="br0">)</span><span class="sy0">;</span>
                whiteListPeople.<span class="me1">remove</span><span class="br0">(</span>person<span class="br0">)</span><span class="sy0">;</span>
                queue.<span class="me1">add</span><span class="br0">(</span>person<span class="br0">)</span><span class="sy0">;</span>
                <span class="kw1">for</span> <span class="br0">(</span><span class="kw3">String</span> aux : liars.<span class="me1">get</span><span class="br0">(</span>person<span class="br0">)</span><span class="br0">)</span>
                    <span class="kw1">if</span> <span class="br0">(</span>color.<span class="me1">containsKey</span><span class="br0">(</span>aux<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
                        color.<span class="me1">put</span><span class="br0">(</span>person, <span class="br0">(</span>color.<span class="me1">get</span><span class="br0">(</span>aux<span class="br0">)</span> + <span class="nu0">1</span><span class="br0">)</span> <span class="sy0">%</span> <span class="nu0">2</span><span class="br0">)</span><span class="sy0">;</span>
                        <span class="kw2">break</span><span class="sy0">;</span>
                    <span class="br0">}</span>
            <span class="br0">}</span>
            <span class="kw1">for</span> <span class="br0">(</span><span class="kw3">String</span> neighbour : liars.<span class="me1">get</span><span class="br0">(</span>person<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
                <span class="co1">// unvisited node</span>
                <span class="kw1">if</span> <span class="br0">(</span>whiteListPeople.<span class="me1">contains</span><span class="br0">(</span>neighbour<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
                    whiteListPeople.<span class="me1">remove</span><span class="br0">(</span>neighbour<span class="br0">)</span><span class="sy0">;</span>
                    queue.<span class="me1">add</span><span class="br0">(</span><span class="nu0">0</span>, neighbour<span class="br0">)</span><span class="sy0">;</span>
                    color.<span class="me1">put</span><span class="br0">(</span>neighbour, <span class="br0">(</span>color.<span class="me1">get</span><span class="br0">(</span>person<span class="br0">)</span> + <span class="nu0">1</span><span class="br0">)</span> <span class="sy0">%</span> <span class="nu0">2</span><span class="br0">)</span><span class="sy0">;</span>
                <span class="br0">}</span>
            <span class="br0">}</span>
            queue.<span class="me1">remove</span><span class="br0">(</span>person<span class="br0">)</span><span class="sy0">;</span>

        <span class="br0">}</span>
        <span class="co1">// test</span>
        <span class="kw4">boolean</span> different = <span class="kw2">true</span><span class="sy0">;</span>

        <span class="kw4">int</span> firstGroup = <span class="nu0">0</span><span class="sy0">;</span>
        <span class="kw4">int</span> secondGroup = <span class="nu0">0</span><span class="sy0">;</span>
        <span class="kw1">for</span> <span class="br0">(</span><span class="kw3">String</span> snitch : liars.<span class="me1">keySet</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
            <span class="kw1">for</span> <span class="br0">(</span><span class="kw3">String</span> neighbour : liars.<span class="me1">get</span><span class="br0">(</span>snitch<span class="br0">)</span><span class="br0">)</span> <span class="br0">{</span>
                <span class="kw1">if</span> <span class="br0">(</span>color.<span class="me1">get</span><span class="br0">(</span>snitch<span class="br0">)</span> == color.<span class="me1">get</span><span class="br0">(</span>neighbour<span class="br0">)</span><span class="br0">)</span>
                    different = <span class="kw2">false</span><span class="sy0">;</span>
            <span class="br0">}</span>
        <span class="br0">}</span>
        <span class="kw1">for</span> <span class="br0">(</span><span class="kw3">String</span> dude : knownPeople<span class="br0">)</span> <span class="br0">{</span>
            <span class="kw1">if</span> <span class="br0">(</span>color.<span class="me1">get</span><span class="br0">(</span>dude<span class="br0">)</span> == <span class="nu0">0</span><span class="br0">)</span>
                firstGroup++<span class="sy0">;</span>
            <span class="kw1">else</span>
                secondGroup++<span class="sy0">;</span>
        <span class="br0">}</span>
        <span class="kw3">System</span>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">(</span><span class="kw3">Math</span>.<span class="me1">max</span><span class="br0">(</span>firstGroup,secondGroup<span class="br0">)</span>+<span class="st0">" "</span>+<span class="kw3">Math</span>.<span class="me1">min</span><span class="br0">(</span>firstGroup,secondGroup<span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span></pre>
<pre><span class="sy0">}</span></pre>
</div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http://myadobe.ro/2011/05/14/adobe-work-play-dev-1-problema-1-2/&amp;layout=standard&amp;show_faces=0&amp;width=450&amp;action=like&amp;colorscheme=light&amp;font=arial" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:25px"></iframe><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmyadobe.ro%2F2011%2F05%2F14%2Fadobe-work-play-dev-1-problema-1-2%2F&amp;title=Adobe%20Work%20%26amp%3B%20Play%20%26%238211%3B%20DEV%201%20Problema%201" id="wpa2a_10"><img src="http://myadobe.ro/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://myadobe.ro/2011/05/14/adobe-work-play-dev-1-problema-1-2/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Adobe Work &amp; Play – DEV 1 Problema 2</title>
		<link>http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-2/</link>
		<comments>http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-2/#comments</comments>
		<pubDate>Sat, 14 May 2011 07:01:41 +0000</pubDate>
		<dc:creator>donac</dc:creator>
				<category><![CDATA[Adobiști]]></category>
		<category><![CDATA[Distracție]]></category>
		<category><![CDATA[Educație]]></category>
		<category><![CDATA[Evenimente]]></category>
		<category><![CDATA[development geeky]]></category>
		<category><![CDATA[eveniment]]></category>
		<category><![CDATA[stagiar]]></category>
		<category><![CDATA[stagii]]></category>

		<guid isPermaLink="false">http://myadobe.ro/?p=3561</guid>
		<description><![CDATA[Fie o matrice A care conține N*M valori întregi pozitive și negative. Pentru definirea unei zone dreptunghiulare din matricea initială, vom utiliza două perechi de numere – (x1,y1) și (x2,y2) – unde x și y au valori de la 0 la N-1 respectiv M-1. Dată fiind o matrice A citită dintr-un fișier de intrare, determinați [...]]]></description>
			<content:encoded><![CDATA[<p>Fie o matrice A care conține N*M valori întregi pozitive și negative. Pentru definirea unei zone dreptunghiulare din matricea initială, vom utiliza două perechi de numere – (x1,y1) și (x2,y2) – unde x și y au valori de la 0 la N-1 respectiv M-1.<br />
<span id="more-3561"></span><br />
Dată fiind o matrice A citită dintr-un fișier de intrare, determinați zona dreptunghiulară pentru care suma elementelor matricii din interiorul ei este maxima. Afișați această suma în fișierul de ieșire.</p>
<p>Datele de intrare se citesc din fișierul matrix.in, care conține:</p>
<ul>
<li>pe prima linie dimensiunile matricei: N M (N numarul de linii/ M numarul de coloane)</li>
<li>pe urmatoarele N linii cate M valori reprezentand valorile din matricea de intrare (separate prin cate un spatiu)</li>
<li>matricea initiala are cel puțin un element strict pozitiv.</li>
</ul>
<p>Suma maxima se va scrie in fișierul matrix.out:</p>
<ul>
<li>Suma elementelor zonei găsite.</li>
</ul>
<p><span style="color: black;font-size: 11pt"><strong>Exemplu:</strong><br />
</span>Fișierul de intrare matrix.out conține:</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span style="color: black">3 3<br />
-1 3 4<br />
-2 3 1<br />
1 2 -4<br />
</span></p>
<p>matrix.out conține:</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span>11<br />
</span></p>
<p>Explicație: A fost determinată zona dreptunghiulară cu colțurile (0,1), (1,2):</p>
<p style="margin-left: 36pt"><span style="color: black">3 4<br />
3 1<br />
</span></p>
<p><strong>Barem:<br />
</strong></p>
<ul>
<li>3p &#8211; descrierea în README.txt a algoritmului, complexitate, de ce functionează &#8211; se acordă maximul doar dacă complexitatea este cea optimă;</li>
<li>2p &#8211; funcționarea pe exemple precum cele din enunț;</li>
<li>
<div>5p &#8211; Cod funcțional de complexitate optimă (n^3);</div>
<ul>
<li>+/- 1p Coding style;</li>
<li>-2p Complexitate neoptimă (n^4);</li>
<li>-4p Complexitate total neoptimă (bruteforce, n^6);</li>
</ul>
</li>
<li>Punctajul este intre 0-10.</li>
</ul>
<p><span style="color: black;font-size: 15pt"><strong>Soluție</strong></span><br />
<strong> </strong></p>
<p><strong>Algoritm:</strong></p>
<pre>1. Pentru fiecare pereche (i,j) se construiește un vector unde elementul de pe poziția k reprezintă suma de pe coloana k din matrice, între liniile i și j.
2. Pentru fiecare vector astfel obținut se construiește subvectorul de sumă maximă.</pre>
<p><strong>Implementare java:</strong></p>
<div style="text-align: left" dir="ltr">
<pre><span class="kw2">public</span> <span class="kw2">class</span> MaxSum <span class="br0">{</span>
    <span class="kw2">public</span> <span class="kw2">static</span> <span class="kw4">void</span> printMatrix<span class="br0">(</span><span class="kw4">int</span><span class="br0">[</span><span class="br0">]</span><span class="br0">[</span><span class="br0">]</span> matrix, <span class="kw4">int</span> n, <span class="kw4">int</span> m<span class="br0">)</span> <span class="br0">{</span>
        <span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i = <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;</span> n<span class="sy0">;</span> i++<span class="br0">)</span> <span class="br0">{</span>
            <span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> j = <span class="nu0">0</span><span class="sy0">;</span> j <span class="sy0">&lt;</span> n<span class="sy0">;</span> j++<span class="br0">)</span> <span class="br0">{</span>
                <span class="kw3">System</span>.<span class="me1">out</span>.<span class="me1">print</span><span class="br0">(</span><span class="kw3">String</span>.<span class="me1">format</span><span class="br0">(</span><span class="st0">"%2d "</span>, matrix<span class="br0">[</span>i<span class="br0">]</span><span class="br0">[</span>j<span class="br0">]</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span>
            <span class="br0">}</span>
            <span class="kw3">System</span>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">(</span><span class="st0">""</span><span class="br0">)</span><span class="sy0">;</span>
        <span class="br0">}</span>
    <span class="br0">}</span>
    <span class="kw2">private</span> <span class="kw2">static</span> <span class="kw4">int</span> startI,endI,startJ,endJ<span class="sy0">;</span>
    <span class="kw2">private</span> <span class="kw2">static</span> <span class="kw4">int</span> seqStart,seqEnd<span class="sy0">;</span>
    <span class="kw2">private</span> <span class="kw2">static</span> <span class="kw4">int</span> maxSubSum<span class="br0">(</span><span class="kw4">int</span><span class="br0">[</span><span class="br0">]</span> a<span class="br0">)</span> <span class="br0">{</span>
        <span class="kw4">int</span> maxSum = <span class="nu0">0</span><span class="sy0">;</span>
        <span class="kw4">int</span> thisSum = <span class="nu0">0</span><span class="sy0">;</span>
        <span class="kw4">int</span> i = <span class="nu0">0</span><span class="sy0">;</span>
        <span class="kw4">int</span> j = <span class="nu0">0</span><span class="sy0">;</span>

        <span class="kw1">while</span> <span class="br0">(</span>j <span class="sy0">&lt;</span> a.<span class="me1">length</span><span class="br0">)</span> <span class="br0">{</span>
            <span class="kw1">if</span> <span class="br0">(</span>a<span class="br0">[</span>j<span class="br0">]</span> <span class="sy0">&lt;</span> <span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span>
                thisSum = <span class="nu0">0</span><span class="sy0">;</span>
                j++<span class="sy0">;</span>
                <span class="kw2">continue</span><span class="sy0">;</span>
            <span class="br0">}</span>
            thisSum = thisSum + a<span class="br0">[</span>j<span class="br0">]</span><span class="sy0">;</span>

            <span class="kw1">if</span> <span class="br0">(</span>thisSum <span class="sy0">&gt;</span> maxSum<span class="br0">)</span> <span class="br0">{</span>
                maxSum = thisSum<span class="sy0">;</span>
                seqStart = i<span class="sy0">;</span>
                seqEnd = j<span class="sy0">;</span>
            <span class="br0">}</span> <span class="kw1">else</span> <span class="kw1">if</span> <span class="br0">(</span>thisSum <span class="sy0">&lt;</span> <span class="nu0">0</span><span class="br0">)</span> <span class="br0">{</span>
                i = j + <span class="nu0">1</span><span class="sy0">;</span>
                thisSum = <span class="nu0">0</span><span class="sy0">;</span>
            <span class="br0">}</span>
            j = j + <span class="nu0">1</span><span class="sy0">;</span>
        <span class="br0">}</span>

        <span class="kw2">return</span> maxSum<span class="sy0">;</span>
    <span class="br0">}</span>

    <span class="kw2">public</span> <span class="kw2">static</span> <span class="kw4">void</span> main<span class="br0">(</span><span class="kw3">String</span><span class="br0">[</span><span class="br0">]</span> args<span class="br0">)</span> <span class="br0">{</span>
        <span class="kw4">int</span> matrix<span class="br0">[</span><span class="br0">]</span><span class="br0">[</span><span class="br0">]</span> = <span class="kw2">new</span> <span class="kw4">int</span><span class="br0">[</span><span class="br0">]</span><span class="br0">[</span><span class="br0">]</span><span class="br0">{</span><span class="br0">{</span><span class="nu0">-1</span>, <span class="nu0">2</span>, <span class="nu0">2</span>, <span class="nu0">-4</span><span class="br0">}</span>, <span class="br0">{</span><span class="nu0">1</span>, <span class="nu0">5</span>, <span class="nu0">6</span>, <span class="nu0">-3</span><span class="br0">}</span>, <span class="br0">{</span><span class="nu0">4</span>, <span class="nu0">-2</span>, <span class="nu0">3</span>, <span class="nu0">-1</span><span class="br0">}</span>, <span class="br0">{</span><span class="nu0">4</span>, <span class="nu0">1</span>, <span class="nu0">2</span>, <span class="nu0">3</span><span class="br0">}</span><span class="br0">}</span><span class="sy0">;</span>

        <span class="kw4">int</span> sumMatrix<span class="br0">[</span><span class="br0">]</span><span class="br0">[</span><span class="br0">]</span> = <span class="kw2">new</span> <span class="kw4">int</span><span class="br0">[</span>matrix.<span class="me1">length</span><span class="br0">]</span><span class="br0">[</span>matrix<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span>.<span class="me1">length</span><span class="br0">]</span><span class="sy0">;</span>
        <span class="kw4">int</span> n = matrix.<span class="me1">length</span><span class="sy0">;</span>
        <span class="kw4">int</span> m = matrix<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span>.<span class="me1">length</span><span class="sy0">;</span>
        printMatrix<span class="br0">(</span>matrix, n, m<span class="br0">)</span><span class="sy0">;</span>

        <span class="kw3">System</span>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">(</span><span class="st0">""</span><span class="br0">)</span><span class="sy0">;</span>
        <span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i = <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;</span> m<span class="sy0">;</span> i++<span class="br0">)</span> <span class="br0">{</span>
            <span class="kw4">int</span> sum = matrix<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="br0">[</span>i<span class="br0">]</span><span class="sy0">;</span>
            sumMatrix<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="br0">[</span>i<span class="br0">]</span> = matrix<span class="br0">[</span><span class="nu0">0</span><span class="br0">]</span><span class="br0">[</span>i<span class="br0">]</span><span class="sy0">;</span>
            <span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> j = <span class="nu0">1</span><span class="sy0">;</span> j <span class="sy0">&lt;</span> n<span class="sy0">;</span> j++<span class="br0">)</span> <span class="br0">{</span>
                sum += matrix<span class="br0">[</span>j<span class="br0">]</span><span class="br0">[</span>i<span class="br0">]</span><span class="sy0">;</span>
                sumMatrix<span class="br0">[</span>j<span class="br0">]</span><span class="br0">[</span>i<span class="br0">]</span> = sum<span class="sy0">;</span>

            <span class="br0">}</span>
        <span class="br0">}</span>
        printMatrix<span class="br0">(</span>sumMatrix, n, m<span class="br0">)</span><span class="sy0">;</span>

        <span class="kw4">int</span> max = <span class="kw3">Integer</span>.<span class="me1">MIN_VALUE</span><span class="sy0">;</span>

        <span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i = <span class="nu0">0</span><span class="sy0">;</span> i <span class="sy0">&lt;</span> n<span class="sy0">;</span> i++<span class="br0">)</span> <span class="br0">{</span>
            <span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> j = i<span class="sy0">;</span> j <span class="sy0">&lt;</span> n<span class="sy0">;</span> j++<span class="br0">)</span> <span class="br0">{</span>
                <span class="kw4">int</span> tempVector<span class="br0">[</span><span class="br0">]</span> = <span class="kw2">new</span> <span class="kw4">int</span><span class="br0">[</span>m<span class="br0">]</span><span class="sy0">;</span>
                <span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> k = <span class="nu0">0</span><span class="sy0">;</span> k <span class="sy0">&lt;</span> m<span class="sy0">;</span> k++<span class="br0">)</span> <span class="br0">{</span>
                    <span class="kw4">int</span> aux<span class="sy0">;</span>
                    <span class="kw1">if</span> <span class="br0">(</span>i <span class="sy0">!</span>= j<span class="br0">)</span> <span class="br0">{</span>
                        aux = sumMatrix<span class="br0">[</span>j<span class="br0">]</span><span class="br0">[</span>k<span class="br0">]</span><span class="sy0">;</span>
                        <span class="kw1">if</span> <span class="br0">(</span>i <span class="sy0">&gt;</span> <span class="nu0">0</span><span class="br0">)</span>
                            aux -= sumMatrix<span class="br0">[</span>i - <span class="nu0">1</span><span class="br0">]</span><span class="br0">[</span>k<span class="br0">]</span><span class="sy0">;</span>
                    <span class="br0">}</span> <span class="kw1">else</span>
                        aux = matrix<span class="br0">[</span>i<span class="br0">]</span><span class="br0">[</span>k<span class="br0">]</span><span class="sy0">;</span>
                    tempVector<span class="br0">[</span>k<span class="br0">]</span> = aux<span class="sy0">;</span>
                    <span class="kw1">if</span><span class="br0">(</span>max<span class="sy0">&lt;</span>maxSubSum<span class="br0">(</span>tempVector<span class="br0">)</span><span class="br0">)</span><span class="br0">{</span>
                        max=maxSubSum<span class="br0">(</span>tempVector<span class="br0">)</span><span class="sy0">;</span>
                        startI=i<span class="sy0">;</span>
                        endI=j<span class="sy0">;</span>
                        startJ=seqStart<span class="sy0">;</span>
                        endJ=seqEnd<span class="sy0">;</span>
                    <span class="br0">}</span>

                <span class="br0">}</span>

            <span class="br0">}</span>
        <span class="br0">}</span>
        <span class="kw3">System</span>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">(</span>max<span class="br0">)</span><span class="sy0">;</span>
        <span class="kw3">System</span>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">(</span><span class="kw3">String</span>.<span class="me1">format</span><span class="br0">(</span><span class="st0">"%d %d %d %d"</span>,startI,endI,startJ,endJ<span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span>

    <span class="br0">}</span>
<span class="br0">}</span></pre>
<pre><span class="br0">
</span></pre>
</div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-2/&amp;layout=standard&amp;show_faces=0&amp;width=450&amp;action=like&amp;colorscheme=light&amp;font=arial" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:25px"></iframe><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmyadobe.ro%2F2011%2F05%2F14%2Fadobe-work-play-%25e2%2580%2593-dev-1-problema-2%2F&amp;title=Adobe%20Work%20%26%23038%3B%20Play%20%E2%80%93%20DEV%201%20Problema%202" id="wpa2a_12"><img src="http://myadobe.ro/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-2/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Adobe Work &amp; Play – DEV 1 Problema 4</title>
		<link>http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-4/</link>
		<comments>http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-4/#comments</comments>
		<pubDate>Sat, 14 May 2011 07:01:37 +0000</pubDate>
		<dc:creator>donac</dc:creator>
				<category><![CDATA[Adobiști]]></category>
		<category><![CDATA[Distracție]]></category>
		<category><![CDATA[Echipa]]></category>
		<category><![CDATA[Educație]]></category>
		<category><![CDATA[Evenimente]]></category>
		<category><![CDATA[development geeky]]></category>
		<category><![CDATA[eveniment]]></category>
		<category><![CDATA[stagiar]]></category>
		<category><![CDATA[stagii]]></category>

		<guid isPermaLink="false">http://myadobe.ro/?p=3572</guid>
		<description><![CDATA[Sistemul sanguin al corpului uman este format din N celule, N organe, M vase de sânge și inima. Inima este punctul central din care sângele este pompat către cele N organe. Fiindcă sângele este fluid, celulele parcurg distanțele prin vasele de sânge în secvențe. Secvența care pornește inițial din inimă conține toate cele N celule. [...]]]></description>
			<content:encoded><![CDATA[<p>Sistemul sanguin al corpului uman este format din N celule, N organe, M vase de sânge și inima. Inima este punctul central din care sângele este pompat către cele N organe. Fiindcă sângele este fluid, celulele parcurg distanțele prin vasele de sânge în secvențe. Secvența care pornește inițial din inimă conține toate cele N celule.<br />
<span id="more-3572"></span><br />
O secvență de celule sanguine care parcurge o distanță între 2 organe pierde o energie C, numeric egală cu distanța dintre cele 2 puncte.</p>
<p>Pentru a oxigena organul destinație, o celulă k dintr-o secvență (i..j) va rămâne fixă în locația acestuia. Dacă celula k se desprinde din interiorul secvenței, va despărți această secvență în 2 noi sub-secvențe – (i..(k-1)) si ((k+1)..j) – care parcurg mai departe distanțele în mod independent una de cealaltă. Dacă celula k se desprinde de la unul din capetele secvenței, secvența rămasă va fi continuă – ((i+1..j) sau (i..j-1)) –.</p>
<p>Determinați consumul de energie minim necesar pentru ca toate organele să fie oxigenate.</p>
<p>Datele de intrare se citesc din fișierul blood.in, care conține:</p>
<ul>
<li>prima linie a fisierului doua numere intregi N si M (N numărul de celule, M numărul de vase de sânge);</li>
<li>pe următoarele M linii câte 3 numere x y c , ce semnifică cu existența unui drum de la organul x la organul y, de lungime c.</li>
</ul>
<p>Datele de ieșire se scriu în fișierul blood.out:</p>
<ul>
<li>Un singur număr întreg reprezentând valoarea energiei minime.</li>
</ul>
<p><strong>Restricții și precizări:</strong></p>
<ul>
<li>N &lt;= 100;</li>
<li>Valoarea energiei minime &lt;= (1&lt;&lt;31);</li>
<li>Dacă o secvență de celule i-j trece prin punctul de destinație al uneia dintre celulele aflate în această secvență, nu este obligatoriu ca această celulă să rămână la destinație;</li>
<li>O celulă nu poate să părăsească secvența decât dacă a ajuns la destinație și rămâne acolo;</li>
<li>Inima reprezintă punctul 0.</li>
</ul>
<p><span style="font-size: 15px"><strong>Exemplul 1:<br />
</strong></span></p>
<p>Fișierul de intrare blood.in conține:</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span style="color: black">4 6<br />
0 1 1<br />
0 2 3<br />
0 3 5<br />
1 2 1<br />
1 4 2<br />
3 4 6<br />
</span></p>
<p>Fișierul de ieșire blood.out conține:</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span style="color: black">11<br />
</span></p>
<p>Explicație:</p>
<ul>
<li>Celulele pleaca impreuna din punctul 0 si parcurg dinstanta 0-&gt;1 consumand 1 unitate de energie. Aici celula 1 se desprinde și rămâne la destinație;</li>
<li>Secventa 2,3,4 parcurge distanța 1-&gt;2  și consumă 1 unitate de energie. Aici celula 2 rămâne la destinație.</li>
<li>Celulele 3,4 se intorc in 1, cost 1</li>
<li>Celulele 3, 4 parcurg distanța 1-&gt;4 și consumă 2 unități de energie. Aici celula 4 rămâne la destinație.</li>
<li>Celula 3 parcurge distanța 4-&gt;3 și consuma 6 unitati de energie. În acest moment toate celulele au ajuns la destinație.</li>
<li><strong>2 + 1 + 3 + 6 = 11</strong></li>
</ul>
<p><span style="font-size: 15px"><strong>Exemplul 2:<br />
</strong></span></p>
<p>Fișierul de intrare blood.in conține:</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span style="color: black">4 6<br />
0 1 3<br />
0 2 2<br />
0 3 5<br />
1 2 1<br />
1 4 2<br />
3 4 6<br />
</span></p>
<p>Fișierul de ieșire blood.out conține:</p>
<p style="background: #e8e8e8;margin-left: 36pt"><span style="color: black">12<br />
</span></p>
<p>Explicație:</p>
<ul>
<li>Celulele pleaca impreuna din punctul 0 si parcurg dinstanta 0-&gt;2 consumând 2 unități de energie. Aici celula 2 se desprinde și rămâne la destinație. Rezultă secvențele 1 și 3,4</li>
<li>Celula 1 parcurge distanța 2-&gt;1 și rămâne la destinație. se consumă 1 unitate de energie;</li>
<li>Secventa 3,4 parcurge distanța 2-&gt;1  și consumă 1 unitate de energie;</li>
<li>Secventa 3,4 parcurge distanța 1-&gt;4  și consumă 2 unități de energie. Celula 4 ramâne la destinație;</li>
<li>Celula 4 parcurge distanța 3-&gt;4 și consumă 6 unități de energie. Celula 4 ramâne la destinație;</li>
<li><strong>2 + 1 + 1 + 2 + 6 = 12</strong></li>
</ul>
<p><strong>Barem:<br />
</strong></p>
<ul>
<li>3p &#8211; descrierea în README.txt a algoritmului, complexitate, de ce functionează &#8211; se acordă maximul doar dacă complexitatea este cea optimă;</li>
<li>2p &#8211; funcționarea pe exemple precum cele din enunț;</li>
<li>
<div>5p &#8211; Cod funcțional de complexitate optimă;</div>
<ul>
<li>+/- 1p Coding style;</li>
<li>-2p Complexitate neoptimă;</li>
<li>-4p Complexitate total neoptimă;</li>
</ul>
</li>
<li>Punctajul este intre 0-10.</li>
</ul>
<p><span style="font-size: 15px"><strong>Soluție</strong></span><br />
<strong>Algoritm (updated)</strong></p>
<ol start="1" type="1">
<li>Se       face un Roy-Floyd sau Dijkstra din fiecare dintre puncte pentru a afla       distanțele minime dintre toate punctele. (Fie matricea X, unde X[i][j]       reprezinta distanta minima de la i la j)</li>
<li>Se       pleacă cu reconstituirea soluției de la final, adică fiecare celulă se       află la destinație și reconstituim drumul fâcut de ele.</li>
<li>Se       face o dinamică pe o matrice 3D unde A[i][j][k] reprezintă energia minimă       cu care secvența de celule i-j (inclusiv extremitățile) a ajuns în punctul       k. </li>
<ul type="circle">
<li>Inițial:A[i][i][i] = 0, restul matricei INF.</li>
<li>recurență: A[i][j][k] = min[A[i][k-1][t] + X[t][k] –        pentru orice t din (i..k-1)] + min[A[i][k-1][r] + X[r][k] – pentru orice        r din (k+1..j)].</li>
<li>Pentru ca orice legatura a secventei i &#8211; j se poate        face doar in nodurile i &#8211; &nbsp;1 sau j – 1 se observa ca este necesar        doar calculul punctelor de forma A[i][j][i-1] si A[i][j][j+1], iar        calculul lui A[1][n][0] devine min(X[0][t] + A[1][n][t]) t din (1..n),        aceasta optimizare reducand la O(n^3) complexitatea.</li>
</ul>
</ol>
<p>Complexitatea  soluției este O(n^3).</p>
<p>&nbsp;</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-4/&amp;layout=standard&amp;show_faces=0&amp;width=450&amp;action=like&amp;colorscheme=light&amp;font=arial" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:25px"></iframe><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmyadobe.ro%2F2011%2F05%2F14%2Fadobe-work-play-%25e2%2580%2593-dev-1-problema-4%2F&amp;title=Adobe%20Work%20%26amp%3B%20Play%20%E2%80%93%20DEV%201%20Problema%204" id="wpa2a_14"><img src="http://myadobe.ro/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-4/feed/</wfw:commentRss>
		<slash:comments>23</slash:comments>
		</item>
		<item>
		<title>Adobe Work &amp; Play – DEV 1 Problema 5</title>
		<link>http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-5/</link>
		<comments>http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-5/#comments</comments>
		<pubDate>Sat, 14 May 2011 07:01:34 +0000</pubDate>
		<dc:creator>donac</dc:creator>
				<category><![CDATA[Adobiști]]></category>
		<category><![CDATA[Distracție]]></category>
		<category><![CDATA[Echipa]]></category>
		<category><![CDATA[Educație]]></category>
		<category><![CDATA[Evenimente]]></category>
		<category><![CDATA[development geeky]]></category>
		<category><![CDATA[eveniment]]></category>
		<category><![CDATA[stagiar]]></category>
		<category><![CDATA[stagii]]></category>

		<guid isPermaLink="false">http://myadobe.ro/?p=3576</guid>
		<description><![CDATA[Folosind una din bibliotecile disponibile la http://www.flickr.com/services/api/, scrieți un program care să afișeze cele mai populare 10 poze făcute în cele mai populare 5 locații dintr-o dată specificată ca parametru de intrare pt program. Pentru fiecare poză afișați titlul și url-ul. Barem: 6p. Readme/ API + comentarii alegere/ Folosire API (cel putin un request functional); [...]]]></description>
			<content:encoded><![CDATA[<p>Folosind una din bibliotecile disponibile la <a href="http://www.flickr.com/services/api/">http://www.flickr.com/services/api/</a>, scrieți un program care să afișeze cele mai populare 10 poze făcute în cele mai populare 5 locații dintr-o dată specificată ca parametru de intrare pt program. Pentru fiecare poză afișați titlul și url-ul.<br />
<span id="more-3576"></span><br />
<span style="color: black;font-size: 11pt"><strong>Barem:</strong></span></p>
<ul>
<li><span style="color: black;font-size: 10pt">6p. Readme/ API + comentarii alegere/ Folosire API (cel putin un request functional);<br />
</span></li>
<li><span style="color: black;font-size: 10pt">4p. Functionalitatea problemei;<br />
</span></li>
<li><span style="color: black;font-size: 10pt">+/- 1p Coding style;<br />
</span></li>
<li><span style="color: black;font-size: 10pt">Punctajul este intre 0-10.</span></li>
</ul>
<p><span style="color: black;font-size: 15pt"><strong>Soluție:</strong></span></p>
<p><span style="color: black;font-size: 15pt"><strong></strong></span><strong>Nu există.</strong></p>
<p>De ce?</p>
<p>Problema din enunț este de tip &#8220;open question&#8221; , iar API-ul de Flickr nu e suficient pentru a găsi un răspuns. As simple as that.</p>
<p>Ce vrem să vedem din codul trimis este modalitatea de abordare a problemei și inventivitatea voastră.</p>
<p>Ca guideline pentru stilul de codare, am adaugat mai jos o mică implementare în Java în care se utilizează biblioteca FlickrJ.</p>
<p>Rezultatul execuției acestei funcții este afișarea primelor 10 poze ca &#8220;interestingness&#8221; din fiecare din primele 5 locații din locații de top dintr-o anumită dată (adică 50 de poze în total). Pentru filtrul de căutare se poate utiliza și relevance în loc de interestingness, deci e ok și o astfel de implementare.</p>
<div style="text-align: left" dir="ltr">
<pre><span class="kw2">public</span> <span class="kw4">void</span> showActivity<span class="br0">(</span><span class="br0">)</span> <span class="kw2">throws</span> FlickrException, <span class="kw3">IOException</span>, SAXException <span class="br0">{</span>

        SearchParameters searchParameters = <span class="kw2">new</span> SearchParameters<span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>

        <span class="co1">// create a date 2 months ago</span>
        <span class="kw3">Calendar</span> calendar = <span class="kw3">Calendar</span>.<span class="me1">getInstance</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>
        calendar.<span class="me1">add</span><span class="br0">(</span><span class="kw3">Calendar</span>.<span class="me1">MONTH</span>,<span class="nu0">-2</span><span class="br0">)</span><span class="sy0">;</span>
        <span class="kw3">Date</span> lastDate = calendar.<span class="me1">getTime</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>

        <span class="co1">// get top places by location on the specified date</span>
        PlacesList topPlaces = f.<span class="me1">getPlacesInterface</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">getTopPlacesList</span><span class="br0">(</span><span class="nu0">7</span>,lastDate,<span class="kw2">null</span>,<span class="kw2">null</span><span class="br0">)</span><span class="sy0">;</span>

        <span class="kw1">for</span> <span class="br0">(</span><span class="kw4">int</span> i=<span class="nu0">0</span><span class="sy0">;</span>i<span class="sy0">&lt;</span><span class="nu0">5</span><span class="sy0">;</span>i++<span class="br0">)</span><span class="br0">{</span>

            Place place = <span class="br0">(</span>Place<span class="br0">)</span>topPlaces.<span class="me1">get</span><span class="br0">(</span>i<span class="br0">)</span><span class="sy0">;</span>
            <span class="kw3">System</span>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">(</span>place.<span class="me1">getWoeId</span><span class="br0">(</span><span class="br0">)</span>+<span class="st0">" - "</span>+place.<span class="me1">getName</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span>

            <span class="co1">// set search params to woe id, sort by interestingness,on max date</span>
            searchParameters.<span class="me1">setWoeId</span><span class="br0">(</span>place.<span class="me1">getWoeId</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span>
            searchParameters.<span class="me1">setSort</span><span class="br0">(</span>SearchParameters.<span class="me1">INTERESTINGNESS_DESC</span><span class="br0">)</span><span class="sy0">;</span>
            searchParameters.<span class="me1">setMaxTakenDate</span><span class="br0">(</span>lastDate<span class="br0">)</span><span class="sy0">;</span>

            <span class="co1">// get photos for location with search params and print some info</span>
            PhotoList fotosForLocation = f.<span class="me1">getPhotosInterface</span><span class="br0">(</span><span class="br0">)</span>.<span class="me1">search</span><span class="br0">(</span>searchParameters,<span class="nu0">20</span>,<span class="nu0">1</span><span class="br0">)</span><span class="sy0">;</span>
            <span class="kw1">for</span><span class="br0">(</span><span class="kw4">int</span> j=<span class="nu0">0</span><span class="sy0">;</span>j<span class="sy0">&lt;</span>fotosForLocation.<span class="me1">size</span><span class="br0">(</span><span class="br0">)</span><span class="sy0">;</span>j++<span class="br0">)</span><span class="br0">{</span>
                Photo foto = <span class="br0">(</span>Photo<span class="br0">)</span>fotosForLocation.<span class="me1">get</span><span class="br0">(</span>j<span class="br0">)</span><span class="sy0">;</span>
                <span class="kw3">System</span>.<span class="me1">out</span>.<span class="me1">println</span><span class="br0">(</span>foto.<span class="me1">getTitle</span><span class="br0">(</span><span class="br0">)</span>+ <span class="st0">" "</span>+foto.<span class="me1">getUrl</span><span class="br0">(</span><span class="br0">)</span>+<span class="st0">" "</span>+foto.<span class="me1">getComments</span><span class="br0">(</span><span class="br0">)</span><span class="br0">)</span><span class="sy0">;</span>
            <span class="br0">}</span>

            <span class="co1">// seems like i have to throttle this</span>
            <span class="kw2">try</span><span class="br0">{</span>
                <span class="kw3">Thread</span>.<span class="me1">sleep</span><span class="br0">(</span><span class="nu0">2000</span><span class="br0">)</span><span class="sy0">;</span>
            <span class="br0">}</span>
            <span class="kw2">catch</span> <span class="br0">(</span><span class="kw3">InterruptedException</span> e<span class="br0">)</span><span class="br0">{</span>

            <span class="br0">}</span>

        <span class="br0">}</span>
    <span class="br0">}</span></pre>
</div>
<iframe src="http://www.facebook.com/plugins/like.php?href=http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-5/&amp;layout=standard&amp;show_faces=0&amp;width=450&amp;action=like&amp;colorscheme=light&amp;font=arial" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:25px"></iframe><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmyadobe.ro%2F2011%2F05%2F14%2Fadobe-work-play-%25e2%2580%2593-dev-1-problema-5%2F&amp;title=Adobe%20Work%20%26amp%3B%20Play%20%E2%80%93%20DEV%201%20Problema%205" id="wpa2a_16"><img src="http://myadobe.ro/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://myadobe.ro/2011/05/14/adobe-work-play-%e2%80%93-dev-1-problema-5/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Adobe Work &amp; Play – UX 1 &#8211; Probleme</title>
		<link>http://myadobe.ro/2011/05/13/adobe-work-play-%e2%80%93-ux-1-probleme/</link>
		<comments>http://myadobe.ro/2011/05/13/adobe-work-play-%e2%80%93-ux-1-probleme/#comments</comments>
		<pubDate>Fri, 13 May 2011 15:00:55 +0000</pubDate>
		<dc:creator>donac</dc:creator>
				<category><![CDATA[Adobiști]]></category>
		<category><![CDATA[Distracție]]></category>
		<category><![CDATA[Echipa]]></category>
		<category><![CDATA[Educație]]></category>
		<category><![CDATA[Evenimente]]></category>
		<category><![CDATA[development geeky]]></category>
		<category><![CDATA[eveniment]]></category>
		<category><![CDATA[stagiar]]></category>
		<category><![CDATA[stagii]]></category>

		<guid isPermaLink="false">http://myadobe.ro/?p=3549</guid>
		<description><![CDATA[Gândiți-vă la un redesign al site-ului Wikipedia.org, pentru a ne arata cum gândiți (și acționați) pentru obținerea unui “interaction design” și “visual design” mai bun. Faceți wireframe-uri care să acopere: layout-ul general, principalele funcționalități și primele nivele structurale ale website-ului. De asemenea, pentru a putea vedea calitățile voastre de graphic designeri, recreați design-ul complet (hi [...]]]></description>
			<content:encoded><![CDATA[<p>Gândiți-vă la un redesign al site-ului Wikipedia.org, pentru a ne arata cum gândiți (și acționați) pentru obținerea unui “interaction design” și “visual design” mai bun. Faceți wireframe-uri care să acopere: layout-ul general, principalele funcționalități și primele nivele structurale ale website-ului.<br />
<span id="more-3549"></span><br />
De asemenea, pentru a putea vedea calitățile voastre de graphic designeri, recreați design-ul complet (hi fidelity) al uneia dintre pagini (de exemplu homepage-ul, dar nu e obligatoriu).</p>
<p>Aveți libertatea de a adăuga sau nu, text sau elemente vizuale care credeți voi că ar putea fi importante pentru o versiune funcțională a website-ului așa cum îl veți regândi voi.<br />
Câteva clarificări, lucruri de urmărit, recomandări:</p>
<p>Prima parte: Ar fi bine să faceți câte o versiune wireframe a fiecăreia dintre următoarele pagini: landing page (<a href="http://www.wikipedia.org/">http://www.wikipedia.org/</a>), English main page (<a href="http://en.wikipedia.org/wiki/Main_Page">http://en.wikipedia.org/wiki/Main_Page</a>), pagina unui articol, la alegere (de exemplu: <a href="http://en.wikipedia.org/wiki/Sibiu">http://en.wikipedia.org/wiki/Sibiu</a>)</p>
<p>O scurtă descriere a problemelor din designul existent și argumentări ale deciziilor de design pe care le luați voi, pentru a rezolva aceste probleme.</p>
<p>A doua parte: Un design (hi fidelity) al paginii principale in engleza: <a href="http://en.wikipedia.org/wiki/Main_Page">http://en.wikipedia.org/wiki/Main_Page</a></p>
<p>Lucruri de urmărit: Păstrați brand-ul curent al Wikipedia (nume, logo, etc). Focusați-vă pe îmbunătățirea layout-ului, a structurii și a prezentării conținutului. Gandiți-vă ce puteți îmbunătăți la “main page” pentru a fi mai atrăgătoare vizual, pentru a face oamenii să o adauge la favorites, pentru a ajuta oamenii să caute și să găsească mai repede ceea ce îi interesează.</p>
<p>Trimiteți-ne rezultatul muncii voastre într-o formă (digitală) care să poate fi ușor citită, distribuită și analizată. De exemplu PDF, dar nu e neaparat necesar.</p>
<p>&nbsp;</p>
<iframe src="http://www.facebook.com/plugins/like.php?href=http://myadobe.ro/2011/05/13/adobe-work-play-%e2%80%93-ux-1-probleme/&amp;layout=standard&amp;show_faces=0&amp;width=450&amp;action=like&amp;colorscheme=light&amp;font=arial" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:25px"></iframe><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmyadobe.ro%2F2011%2F05%2F13%2Fadobe-work-play-%25e2%2580%2593-ux-1-probleme%2F&amp;title=Adobe%20Work%20%26amp%3B%20Play%20%E2%80%93%20UX%201%20%26%238211%3B%20Probleme" id="wpa2a_18"><img src="http://myadobe.ro/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://myadobe.ro/2011/05/13/adobe-work-play-%e2%80%93-ux-1-probleme/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Adobe Work &amp; Play &#8211; QE 1 &#8211; Probleme</title>
		<link>http://myadobe.ro/2011/05/13/adobe-work-play-qe-1-probleme/</link>
		<comments>http://myadobe.ro/2011/05/13/adobe-work-play-qe-1-probleme/#comments</comments>
		<pubDate>Fri, 13 May 2011 14:07:38 +0000</pubDate>
		<dc:creator>donac</dc:creator>
				<category><![CDATA[Adobiști]]></category>
		<category><![CDATA[Distracție]]></category>
		<category><![CDATA[Echipa]]></category>
		<category><![CDATA[Educație]]></category>
		<category><![CDATA[Evenimente]]></category>
		<category><![CDATA[development geeky]]></category>
		<category><![CDATA[eveniment]]></category>
		<category><![CDATA[stagiar]]></category>
		<category><![CDATA[stagii]]></category>

		<guid isPermaLink="false">http://myadobe.ro/?p=3539</guid>
		<description><![CDATA[Problema 1: Tocmai te-ai angajat la compania care dezvoltă platforma de blogging WordPress și cum nu s-ar putea mai bine, vei incepe cu o testare generală a produsului. Ai la dispoziție mai multe configurații cu care să începi de la zero (adică conțin doar instalări ale sistemului de operare), iar printre responsabilitatile tale se numără: [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: 15pt"><strong>Problema 1:<br />
</strong></span></p>
<p>Tocmai te-ai angajat la compania care dezvoltă platforma de blogging WordPress și cum nu s-ar putea mai bine, vei incepe cu o testare generală a produsului. </p>
<p><span id="more-3539"></span><br />
Ai la dispoziție mai multe configurații cu care să începi de la zero (adică conțin doar instalări ale sistemului de operare), iar printre responsabilitatile tale se numără:</p>
<ul>
<li><span style="color: black">Crearea unui test plan (care conține tot ceea ce crezi tu că ar trebui să conțină un astfel de document);<br />
</span></li>
<li><span style="color: black">Scrierea unei liste de teste funcționale si non-funcționale care le vei rula pentru testarea WordPress-ului;<br />
</span></li>
<li><span style="color: black">Automatizarea testelor mentionate mai sus, utilizând un framework de testare la alegere;<br />
</span></li>
</ul>
<p><span style="font-size: 15pt"><strong>Problema 2:<br />
</strong></span></p>
<p><span style="color: black">Ești in prima lună de angajare la banca favorită, in cadrul departamentul IT, iar primul tău assignment este să testezi funcționarea software-ului noului ATM. Proiectul este ultra-secret, dar fiindcă interfața este scrisă în Flex cu ajutorul Adobe, ne vei ajuta să testam cât mai bine software-ul. Astfel, va trebui să:<br />
</span></p>
<ul>
<li><span style="color: black">Creezi un test plan (care sa descrie tot ceea ce crezi tu că ar trebui să conțină un astfel de document);<br />
</span></li>
<li><span style="color: black">Scrii o listă de teste funcționale și non-funcționale pe care le vei rula pentru a certifica buna funcționare;<br />
</span></li>
<li><span style="color: black">Automatizezi o parte din testele funcționale și non-funcționale identificate, utilizând un framework de testare la alegere;<br />
</span></li>
<li>
<div><span style="color: black">Ne trimiți numele băncii preferate ca să știm cu cine faci banking<br />
</span></div>
<p>&nbsp;</li>
</ul>
<p><span style="font-size: 15pt"><strong>Baremul, sau la ce ne uităm:<br />
</strong></span></p>
<ul>
<li><span style="color: black">Structura si corectitudinea planului de teste;<br />
</span></li>
<li><span style="color: black">Granularitatea si calitatea testelor funcționale și nefuncționale;<br />
</span></li>
<li><span style="color: black">Claritatea și ușurința de utilizare a testelor automate;<br />
</span></li>
</ul>
<iframe src="http://www.facebook.com/plugins/like.php?href=http://myadobe.ro/2011/05/13/adobe-work-play-qe-1-probleme/&amp;layout=standard&amp;show_faces=0&amp;width=450&amp;action=like&amp;colorscheme=light&amp;font=arial" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:450px; height:25px"></iframe><p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fmyadobe.ro%2F2011%2F05%2F13%2Fadobe-work-play-qe-1-probleme%2F&amp;title=Adobe%20Work%20%26amp%3B%20Play%20%26%238211%3B%20QE%201%20%26%238211%3B%20Probleme" id="wpa2a_20"><img src="http://myadobe.ro/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://myadobe.ro/2011/05/13/adobe-work-play-qe-1-probleme/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

