Jump to content

cmiN

Active Members
  • Posts

    1609
  • Joined

  • Last visited

  • Days Won

    27

Everything posted by cmiN

  1. La table nu avea cum sa stie de la inceput fiindca erau implicate si deciziile celor doi jucatori. Oricum nedo se referea la ceva de genul: #include <stdio.h> #include <time.h> #include <stdlib.h> #define LIM 4 int main() { int nr; srand(time(NULL)); nr = rand() % LIM + 1; printf("%d\n", nr); return 0; } Functioneaza destul de bine, dar daca vei face teste unul dupa altul vei observa un model de numere descrescatoare fiindca samantele vor fi foarte apropiate si vor cauza un comportament similar, crescator. Daca scoti acel srand mereu vei obtine aceeasi cifra la executarea algoritmului fiindca se va pleca de la aceeasi pasi fara nicio influenta si daca pui o bucla in cod vei observa ca se vor afisa aceleasi numere la fiecare executie in aceeasi ordine. Nu exista random pur / dezordine ... ci o altfel de ordine, dar cu cat entropia e mai mare cu atat pare mai uman la intamplare .
  2. ^ Merci de artist, dar prefer oricum va aparea in urmatorul pack, le mai auzisem.Bonus ceva jazz din fallout3: rs or gf.
  3. Selectia continua si de data asta aduce ceva nou, mai rafinat din categoria chill, melodii atent luate una cate una, ascultand diverse statii, apoi verificate calitativ. Daca va plac recomand si penultimul pack. In deschidere cu Paper Crows Gone - YouTube prezint: Rapidshare: chill13 chill14 Gamefront: chill13 chill14 Nu confundati chillul cu muzica ambientala ... predomina mai mult vocalul cu tenta electro/indie acustica.
  4. Perfect de acord cu pyth0n3, dar cum zicea si Paul copiii astia brocoli sunt pentru subpamanteni exact cum sunt babele pentru emisiunea lui Diaconescu ... traiesc intr-o oarecare simbioza numai ca persoana cu iqul mai mic va vedea in cealalta un amic, dar cealalta nu va vedea decat un pr0st.
  5. Da, prima oara inainte sa incep scriptul m-am gandit la asta, dar doar din punct de vedere optimal nu si ca ar putea intra in bucla infinita, oricum am editat codul de pe pastebin, adaugand inca o singura linie in functia replace si face ce face si a ta. Inca o data scuze, cum m-am gandit ca ar scadea putin din viteza cautarea redundanta a valorilor deja inlocuite mi-am spus ca la nivelul asta nu conteaza acele nanosecunde in plus si am trecut mai departe, dar am uitat de acel caz, oricum am pus doar o linie in plus, acea incrementare la pos.
  6. What about this or: >>> inlist = raw_input("Text: ").split() Text: mere portocale ana are mere >>> print " ".join(inlist[2:]).replace(inlist[0], inlist[1]) ana are portocale P.S.: In sursa de C++ replace face toata treaba, main e doar de fatada.
  7. De ce sa inveti matematica daca nu stii programare ? Cel mai bun pas pe care il poti face in a invata un limbaj de programare sau ceva legat de stiinta calculatoarelor este sa nu mai intrebi in stanga si in dreapta ci sa iti faci niste tinte (ca obiectivele intr-un joc unele principale altele secundare), iar ca prim obiectiv: sa te informezi de limbajele de programare si cam ce face fiecare, cum arata, cat de accesibil iti este, ce implica el, apoi cauti carti, tutoriale despre asa ceva, incepand cu siteul oficial. Recomand Python, e ca o introducere pentru copii in lumea programarii, te va trece mai prin tot fara toate detaliile alea de care esti obligat sa tii cont in celelalte limbaje si care foarte probabil iti vor da un gust amar. Apoi nu ai decat sa aprofundezi cu C/C++ si sa te faci maestru pe oop in Java. Toti cei de aici iti vor spune exact ceea ce le face lor placere si ar considera ca trebuie sa inveti, asa ca cel mai obiectiv "prieten" ramane Google.
  8. AI am "absolvit" cu 65 advancedul :> mai demult. Acum m-am bagat pe cele mai interesante si vanate doua ... dupa parerea mea: Design and Analysis of Algorithms I Computer Security
  9. Nu stiu ... aerul, designul, acele stereotipuri de care nu poti fi constient.
  10. Chiar facea mari probleme flashul pe chrome, la mai multe instante paralele crapa urat dupa ce consuma aproape un gb ram.
  11. I-am dat o ciorba de loboda care e mult mai sanatoasa decat kebabul, chiar daca nu prea ii place la prima gustare.
  12. Lasa prototipurile alea si strange bani de nexus, parerea mea ca este cel mai "stabil" telefon si chiar are fata de telefon spre deosebire de aifon. Cele mai noi si mai populare aplicatii, pe droid vor fi si multe lucruri gratis cu sursa libera, iti poti scrie usor propriile apkuri mai ales ca a aparut si layerul ala pentru scripting. Gandeste-te ca are un linux la baza, interfata e mult mai user-friendly, vei gasi suport imediat printre numeroasele comunitati, ba chiar si la facultate vei putea participa la mai multe proiecte java/android/py/kivy si cu o alta placere decat iOS .
  13. Am dat un search pe forum si am vazut ca nu s-a mai postat asta, ciudat . Pe acest site ai la dispozitie gratis o consola in care poti scrie si executa cod Python ca si pe masina locala (cu anumite restrictii in afara folderului), te poti plimba prin tot sistemul, poti accesa si crea fisiere, am testat socketul, nu te lasa decat local . Normal dai sign up si astepti sa te invite, dar poate fi direct accesibil prin intermediul unui alt pachet http://www.pythonanywhere.com/try-ipython/.
  14. Multa lume ma intreba acelasi lucru si le zic asta. Ceva surse gasesti in box.com/cmiN in /tutorials/Python. Spor!
  15. Teoretic indiferent cum ar imparti banii, ceilalti pirati ar trebui sa voteze impotriva, pentru ca dupa ce va fi aruncat, urmatorul va fi mai descurajat si fiind mai putini pirati fiecarui ii va reveni o suma ceva mai mare si pe urma as da la urmatorii doi pirati 45 si 55 si la ceilalti 2 0 si 0 in speranta ca cel de sub primul pirat va accepta oferta mai mare, dar ala poate vota si el impotriva, vor ramane 3, se poate intampla acelasi lucru si din ultimii 2 ramasi primul ia 100 si pleaca acasa cu tot aurul. Trebuie spus ceva in legatura cu modul de alegere al aurului, adica daca mereu vor gandi la fel, cat de mult vor sa castige vs. cat de mult vor sa-l pastreze pe coleg nu sa-l arunce peste bord, cat de rezonabili sunt cu ei insisi si cu ceilalti. Daca primul pirat pastreaza 0 pentru el si da in mod egal la restul tot sunt sanse sa fie aruncat. Oricum am imparti trebuie neaparat sa-i dau lui al doilea 50 fiindca daca vom face ceva in genul 34 33 33 0 0 al doilea nu va fi de acord (pe langa ultimii 2, indiferent ca vor primii 0 sau o suma mai mare) primul va fi aruncat iar urmatorii 2 vor avea 50 si 50 si ceilalti 2 0 si 0, pentru ca acum lui al treilea ii va fi teama sa se impotriveasca deoarece pe urma s-ar impotrivi si al patrulea doar ca sa ramana singur cu ultimul sa ia tot aurul, asta doar daca nu cumva se gandesc si la ultimul sa-i dea ceva, oricat i-ar da acesta nu va vota impotriva, stiind ca va ramane cu 0 daca nu accepta. Deci am 2 raspunsuri: 20 20 20 20 20 pe motiv psihologic sau primul pirat este aruncat peste bord orice ar fi. P.S.: Nu cred in rezolvarea de pe wiki, vor vota toti impotriva.
  16. Se umple off topicul pe urma, deja este full, iar limita e aiurea pentru ca sunt utilizatori care posteaza 30 intr-o zi poate dar sunt si de calitate. Orice idee de genul ar fi duce la optiunea restrangerii forumului de aceea e si sectiunea aia vip. Cea mai buna idee mi se pare inca metoda de codare/obscurare a linkurilor de download, cine e suficient de 1337 supravietuieste. Ar fi bine sa existe un regulament mai simplu, rezumat la cateva randuri si fiecare sa poata fi expandat intr-un paragraf pentru detalii, macar asa poate il citeste cineva.
  17. Daca se pastrau posturile vechi, nu neaparat alea foarte vechi, mai era ceva, da asa simti ca o iei de la capat si orice postezi undeva iti vine sa postezi si dincolo si pe urma nici asa nu-ti convine, oricum imi placea mai mult MT .
  18. ^ Pe 64 bit doar pointerul e dublu, de aia 32 bit nu-ti vede mai mult de 3-4 gb de ram, dar din nou depinde de compilator.
  19. Acest script cross-platform permite rularea unei comenzi batch/bash cu parametri variabili preluati din fisiere text, linie cu linie. Am simtit nevoia sa fac ceva mai general tocmai din cauza multor subiecte si cereri pe tema asta. Indiferent cate comenzi veti executa tot outputul e afisat in timp real in aceeasi consola (sau si intr-un fisier) fara sa se amestece (se presupune a folosi comenzi de aceeasi speta ce genereaza un output calitativ nu cantitativ), iar preluarea comenzilor este foarte stabila, respecta cu strictete numarul threadurilor alocate si ordinea in functie de timpi. Codul este pur Python, pana si executarea comenzilor se face in procese separate independente de terminal, ceea ce previne shell injection si alte neplaceri cu restrictia unor "smenuri" tipice bash, dar acest comportament poate fi schimbat prin modificarea si adaugarea unui argument din clasa Popen, oricum nu intru in amanunte, fiindca e in afara scopului si nici nu cred ca va veti lovi de problema asta. Foloseste Python 2.x, testat pe windows 7 si backtrack cu un script simplu ca: #include <stdio.h> #include <time.h> #include <windows.h> #define N 10 /* N phases */ int main(int argc, char* argv[]) { int i; for (i = 0; i < N; ++i) { printf("Process %s with %s at phase %d.\n", argv[1], argv[2], i); fflush(stdout); Sleep(1000); /* replace with sleep(1) on posix */ } return 0; } Parametrii de test luati din 2 fisiere prin linia: run.py -t 2 -d 0.5 scan.exe @a.txt @b.txt P.S.: Atentie la output, imaginati-va putin cam cum va arata ceea ce urmeaza sa faceti ca sa nu aveti surprize. cd in folderul cu scriptul chmod +x ./run.py ./run.py -> vezi usage http://codepad.org/tn3Xwohw #! /usr/bin/env python # Shell Multi Runner # 12.02.2012 cmiN # # Execute commands in terminal asynchronously using subprocess # and show all output merged into one console. # # Contact: cmin764@yahoo/gmail.com import subprocess # better than popen/system/respawn from sys import argv, stdout from time import sleep from threading import active_count, Thread # parallelism # some settings FILE = None # output to file too THRD = 10 # threads DLAY = 1 # delay CHAR = '@' # wildcard # instantiated in only one object class Show(file): """ Thread safe printing class. Uses primitive locks. """ def __init__(self, fname=None): """ If `fname` isn't `None` write output to file too. """ self.locked = False # unlocked self.open_file(fname) def __del__(self): """ Destructor. Close an opened file. """ if self.fname: self.close() def open_file(self, fname): """ Open file for writing. """ self.fname = fname if fname: # init file super(Show, self).__init__(fname, 'w') def write(self, data): """ Safe write. """ while self.locked: # if writing in progress pass # wait # lock self.locked = True # write data if self.fname: super(Show, self).write(data) stdout.write(data) # flush data if self.fname: self.flush() stdout.flush() # release self.locked = False def fileno(self): """ Experimental. Used as file descriptor replacing pipes. """ if self.fname: return super(Show, self).fileno() return stdout.fileno() class Engine(Thread): """ Execute each command in a separate thread and listen for it's output. """ def __init__(self, command): super(Engine, self).__init__() # superclass constructor self.command = command def run(self): """ Function called from outside by `start` method. """ # fork the fucking process pobj = subprocess.Popen(self.command.split(), stdout=subprocess.PIPE, stderr=subprocess.STDOUT) # listen for new input while True: line = pobj.stdout.readline() if line == "": # more output it's about to come if pobj.poll() != None: # nope break # so exit continue # try again report.write(line) # globals usage = """ Usage: {0} [options] command Options: -t, --threads <int> how many asynchronous threads to run -d, --delay <float> time in seconds to wait between each run -f, --file <str> write output to file too Commands: <any valid command> ex: wget {1}links.txt If you preceed a parameter with {1} it becomes a list with parameters taken from a file called like itself. Old: ./scan -h 91.202.91.119 -u usr.txt -p pwd.txt New: {0} ./scan -h {1}hosts.txt -u usr.txt -p pwd.txt """.format(argv[0], CHAR) report = Show() # make verbose object def generate(command, expand, pos): """ Format command recursively. """ if pos == len(expand): # now command string is complete sleep(DLAY) # delay while active_count() > THRD: pass # wait if number of threads is exceeded report.write("[+] Start: %s\n" % command) Engine(command).start() return expand[pos].seek(0) # rewind for line in expand[pos]: generate(command.replace("{%d}" % pos, line.strip()), expand, pos + 1) def main(): global FILE, THRD, DLAY, CHAR # check if len(argv) == 1 or argv[1] in ('-h', "--help"): print usage return # insuficient parameters # parse report.write("[+] Parsing...\n") argv.pop(0) # remove script name command = "" ind = 0 # index expand = [] # list with special parameters while ind < len(argv): if argv[ind] in ('-t', "--threads"): ind += 1 THRD = int(argv[ind]) elif argv[ind] in ('-d', "--delay"): ind += 1 DLAY = float(argv[ind]) elif argv[ind] in ('-f', "--file"): ind += 1 FILE = argv[ind] report.open_file(FILE) elif argv[ind][0] == CHAR: # reserve variable parameter for special ones command += ' ' + "{%d}" % (len(expand)) # add to list special parameters (`CHAR`<smth>) expand.append(open(argv[ind][1:], 'r')) # file objects else: command += ' ' + argv[ind] ind += 1 # process report.write("[+] Processing...\n") generate(command.strip(), expand, 0) while active_count() > 1: pass # wait for running threads report.write("[+] Done.\n") if __name__ == "__main__": main() Updated: 14.02.2012
  20. Sa se scrie un algoritm, preferabil in C, care sa transforme o expresie de genul: 2+7*5-4/2*3 intr-un arbore binar ce contine doar in frunze intregi si in celelalte noduri operatia respectiva. Optional: Sa se construiasca un header cu functii / o clasa care sa manipuleze astfel de expresii in ambele sensuri (arbore->expresie, expresie->arbore) dar sa le si calculeze. Daca va tine cardanu' implementati si suport pentru paranteze .
  21. Bun si daca-mi deschid browserul, instalez acel toolbar si-l las pe niste pagini google/youtube/etc, iar in paralel stau cu mozilla pe pr0n mai primesc banii ?
  22. Penumbra, Amnesia, Scratches FTW!
  23. Si eu aveam cont de prin 2006 pe bux.to (de cand cu renovarea siteului l(le)-au sters) si am strans prima oara 10$ am dat cashout pe alertpay (altceva nu suporta) si mi-au zis ca mi-au trimis banii, dar pe alertpay nu aveam nimic, apoi am facut support ticket si mi-au spus ca banii au fost trimisi in schimb mai dureaza sa-i "despacheteze" in cont, am asteptat un an si nimic intre timp am mai strans 100 si ceva $ carora le-am dat iar cashout (puteam da fiindca ultima tranzactie figura ca trimisa/completa) si teoretic banii trebuiau trimisi in maxim 2-3 luni, eu am asteptat 2-3 ani, tot timpul asta facand ticketuri si ei imi ziceau ca au niste probleme tehnice iar trimiterea banilor ar putea ajunge pe la vreo 6 luni, dar eu le-am explicat ca au trecut ani de zile si pana la urma nu mi-au mai raspuns decat cu un "Va rugam asteptati." si asta a fost tot anul asta sa descopar de fapt ca nici nu mai am cont. Timpul a mai trecut si aparuse lockerz, fusesem in primii 10 care aveau cont din Ro imediat cum aparuse si am reusit sa dau o comanda de shuffle pe care nu-l mai aveau in schimb mi-au trimis pe paypal 50$ pe care a doua zi ii aveam in mana si cand devenisem zlister mi-au trimis tricou, respect . Dar dupa ceva vreme toate se scumpisera, trebuia sa te misti intr-un timp exprimat in milisecunde ca sa poti prinde un premiu cu punctele care le aveai cand era redeem, pe cand pagina se incarca in minute (timeouturi) si dupa ce mergea ultimul reload erau toate fresh out. Prieteni de-a mei care isi facusera si ei cont si devenisera zlisteri nu mai primeau tricou, mai trecura timpul si deja politica siteului s-a schimbat ... acum e cu licitatii sau rahatul ala de shop cu discount, premiile costa de vreo 25 de ori mai multe puncte, de cand cu sectiunea play au aparut numai disperati asiatici care vad videouri non stop doar ca sa stranga puncte si tot felul de rahaturi cu poze, bloguri, etc. Deci parerea mea este ca pe orice site facator de minuni pana nu investesti ceva in el, neaparat sa devii premium si pana nu nimeresti in primii din ierarhie/piramida, nu castigi mai nimic sau decat foarte putin prima data ca sa-ti dea sperante. Asa ca voi astia cu ptcuri in loc sa scrieti atatea texte frumoase si sa tot ridicati in slavi linkul acela de inregistrare cu referal mai bine puneti un scan cu factura/chitanta cu banii pe care i-ati scos voi cu mana voastra din asa ceva (nu tovarasii vostri) si apoi mai discutam.
  24. Bitch please ... 0.85 secunde (worst case): Ideone.com | Online Python Interpreter & Debugging Tool #! /usr/bin/env python # C++ Fibonacci challenge # 10.02.2012 cmiN # exponentiere a matricei Q fibonacci # in timp logaritmic folosind numere mari from decimal import getcontext, Decimal as D class CFib: """ Clasa pentru a calcula CMMDCul a 2 numere din seria Fibonacci. Se stie ca cmmdc(fib(a), fib() e acelasi lucru cu fib(cmmdc(a, ) unde fib(x) este al x-lea numar din serie. Acesta poate fi calculat foarte rapid cu ridicarea unei matrice 2x2 specifice folosind ridicare la putere in logN. Totusi avem nevoie si de numere mari (decimal) ;]. """ def __init__(self, a, : # setam precizia in zecimale getcontext().prec = 7000 # nici al 30k-lea nu depaseste self.a = a self.b = b self.qmat = ((1, 1), (1, 0)) self.res = ((D(1), D(0)), # I2 (D(0), D(1))) def cmmdc(self, a, : """ Euclid cu impartiri. """ while b != 0: t = a a = b b = t % b return a def multiply(self, op=False): if op: # op e True cand inmultim noua matrice Q cu rezultatul mat = self.res # doar o referinta / un sinonim catre un obiect else: # si False cand ridicam la patrat si retinem matricea Q mat = self.qmat # prea lenes sa bag 3 foruri e1 = mat[0][0] * self.qmat[0][0] + mat[0][1] * self.qmat[1][0] e2 = mat[0][0] * self.qmat[0][1] + mat[0][1] * self.qmat[1][1] e3 = mat[1][0] * self.qmat[0][0] + mat[1][1] * self.qmat[1][0] e4 = mat[1][0] * self.qmat[0][1] + mat[1][1] * self.qmat[1][1] # modificam rezultatul cu noile valori mat = ((e1, e2), (e3, e4)) if op: self.res = mat else: self.qmat = mat def process(self): """ Functia principala. """ nr = self.cmmdc(self.a, self. #print nr # debug # acum ridicam pe res la nr while nr > 0: if nr % 2: # putere impara self.multiply(True) # inmultim cu rezultatul self.multiply() # multiplicam qmat nr /= 2 def get(self): return str(self.res[0][1]) # (Q^n)[0][1] == F(n) def main(): (a, = raw_input("Introdu 2 numere: ").split() obj = CFib(int(a), int() obj.process() print obj.get() if __name__ == "__main__": main() Codul e comentat nu mai e nevoie de explicatii, implementati asta in C/C++ si veti obtine un timp mult mai bun. O biblioteca light pentru numere mari gasiti aici.
×
×
  • Create New...