• Acasă
  • Despre noi
  • Autori
  • Mărturii
  • Arhivă
  • Trimite Articol
  • Contact

WORLDIT

Lumea în 1 și 0.

  • Știri
    • Tehnologie
    • Tehnologie mobilă
    • Securitate
    • Developers
    • Știință
    • Benzi desenate
    • Jocuri
    • Intern
  • Tehnic
    • Browser
    • C#
    • C/C++
    • Challenge
    • HTML/CSS
    • Javascript, Ajax, jQuery
    • Open Source
    • PHP
    • Python
    • Securitate IT
    • Socializare
    • WordPress
    • Altele
  • Recenzii
  • Interviuri
  • Evenimente

Rezolvă problemele Sudoku cu o aplicație în Javascript de doar 140 bytes

4
  • Publicat de Andrei Avădănei
  • în Javascript, Ajax, jQuery · Open Source · Tehnic
  • — 28 sept., 2011 at 3:57 pm

Sunt sigur că ați jucat cel puțin o dată Sudoku, aș putea spune unul din jocurile copilăriei. Dacă nu, o căutare pe Google vă pune la dispoziție diverse aplicații care de care mai complexe prin care puteți juca atât singleplayer cât și multiplayer jocul. Bine, noi nu suntem aici să discutăm despre asta ci dorim să vă arătăm o soluție a unui personaj care a reușit să facă un algoritm recursiv de doar 140 de bytes care rezolvă această problemă. Codul sursă este scris în Javascript și este suficient de bine comentat pentru a putea fi înțeles.

Va las cu algoritmul! Mai multe detalii aici. 🙂

function R
(
    a,  // the array representing the sudoko grid

        // placeholder arguments
    i,  // index of the last empty cell
    j,  // index to check the candidates for the cell 'i'
    m,  // candidate number for the the cell 'i'
    g   // flag whether 'm' is a already used in the same row|col|node as 'i'
){
    // phase 1: look for an empty cell
    for
    (   
       i=80;   
       a[i];        // keep going if the cell isn't empty
       i--||+a      // decrease the index and call 'a.toString()' if we went through the whole grid
    );
    // phase 2: check all candidate numbers for the cell 'i'
    for
    (
      m=10;
      g=a[i]=--m;   // put the candidate in the cell 'i' already and set 'g' to something truthy
                    // at the end of phase 2, the cell 'i' is reset to 0 for "higher" branches of the recursion
        g&&R(a)     // recurse if 'm' isn't already used in the same row|col|node as 'i'
   )
      // phase 3: check if the candidate number is used already
      for(j in a)           // loop through the whole grid again
           g*=              // turn 'g' falsy if 
              a[j^i==j]     // we are not on the cell 'i'
              ^m            // and the cell 'j' is set to 'm'
              ||            // and we are in the same row|col|node as 'i'
              i/9^j/9&&i%9^j%9&&i/27^j/27|i%9/3^j%9/3
}

Etichete: algoritmalgoritm sudokualgoritm sudoku in javascriptjavascriptproblema sudokusolutie sudokusudokututorial javascript

— Andrei Avădănei a scris 1246 articole

Andrei scrie pe worldit.info din vara lui 2011. Este fondatorul Asociatiei Centrul de Cercetare in Securitate Informatica din Romania - CCSIR si coordoneaza DefCamp, cea mai importanta conferinta de securitate informatica & hacking din Europa Centrala si de Est. Andrei ofera in cadrul Bit Sentinel servicii de securitate informatica, penetration testing, security management, recuperarea de pe urma unui atac cibernetic, training-uri si workshop-uri.

  • Articolul anterior MySQL.com a infectat vizitatorii cu malware în urma unui atac informatic
  • Articolul următor Infographic #1 – A World Whitout Google

4 Comentarii

  1. Roland spune:
    septembrie 28, 2011 la 4:17 pm

    Genial!

  2. Bogdan Condurache spune:
    septembrie 28, 2011 la 5:28 pm

    Gata, mi-ai dat o idee geniala. Voi incerca sa fac si eu o astfel de aplicatie, doar ca in C++. Bineinteles, ca voi evita alte surse de „inspiratie” (incluzand aici si articolul acesta). 😀

    • Andrei Avădănei spune:
      septembrie 28, 2011 la 6:09 pm

      Astept rezultatul. 😀

  3. happyday spune:
    septembrie 28, 2011 la 7:41 pm

    buna idee. pune-l la treaba pe puturosul asta. 😉


  • Facebook

    WorldIT.info
  • Ultimele Atacuri Cibernetice din Romania – RO Hacked

    [wp_rss_retriever url="https://rohacked.bit-sentinel.com/feed/" excerpt="none" items="5" read_more="false" new_window="true" thumbnail="false" cache="0"] RO Hacked este registrul atacurilor cibernetice din România.
  • Caută

  • Articole Recomandate

    • Recent Posts
    • Tags
    • Număr record de participanți la DefCamp 2015, cel mai important eveniment dedicat securității cibernetice din Europe Centrala si de Estdecembrie 2, 2015
    • La DefCamp 2015 vei afla prin ce tehnici pot fi evitate măsurile de securitate ale sistemelor informatice criticeoctombrie 16, 2015
    • Ultima sansa sa rezervi bilete de tip Early Bird la DefCamp 2015septembrie 1, 2015
    • 15 sfaturi despre cum poti deveni un programator bun venite de la specialisti romaniaugust 4, 2015
    • algoritmica Android antivirus Apple Avadanei Andrei benzi desenate BitDefender blog browser C++ Chrome concurs eveniment Facebook Firefox Google google chrome hacking html5 infografic informatica internet Internet Explorer IT javascript linux Microsoft Mozilla Firefox online PHP programare retea sociala review Romania securitate Tehnologie Twitter web Windows Windows 7 Wordpress WorldIT worldit.info Yahoo! YouTube
  • mai 2022
    L Ma Mi J V S D
     1
    2345678
    9101112131415
    16171819202122
    23242526272829
    3031  
    « dec.    
  • Link-uri Sponsorizate

    • laptop second hand

    • Calculatoare Second Hand

    • cod voucher pc garage

  • Home
  • Tehnic
  • Javascript, Ajax, jQuery
  • Rezolvă problemele Sudoku cu o aplicație în Javascript de doar 140 bytes
  • Important

    • Bit Sentinel
    • Centrul de Cercetare în Securitate Informatică din România
    • DefCamp
  • Prieteni

    • BetiT.ro
    • bijuterii handmade
    • Computerica | Resurse gratuite PC
    • Descopera.org
    • Gadgeturi si IT – Giz.ro
  • Prieteni

    • PC – Config
    • RO Hacked
    • Stiri IT

Copyright © 2009-2014 WORLDIT. Toate drepturile Rezervate.
Termeni și condiții | Contact | Licența Creative Commons