Hei! Kaikkihan tietävät Countdown-pelin numero-kierroksen:
https://en.wikipedia.org/wiki/Countdown_(game_show)#Numbers_round
Tässä kilpailussa on tarkoituksena koodata tämä ja tehdä käyttöliittymä (UI), joka olisi mahdollisimman sutjakka.
Laitoin tämän Reddittiinkin ( https://www.reddit.com/r/programmingchallenges/comments/b5f4rh/competition_for_designing_a_ui_for_countdown/ ), mutta siellä kukaan ei tykännyt tästä, meidän on nyt täällä Suomi24:ssa pidettävä yhtä köyttä!
https://en.wikipedia.org/wiki/Countdown_(game_show)#Numbers_round
Tässä kilpailussa on tarkoituksena koodata tämä ja tehdä käyttöliittymä (UI), joka olisi mahdollisimman sutjakka.
Laitoin tämän Reddittiinkin ( https://www.reddit.com/r/programmingchallenges/comments/b5f4rh/competition_for_designing_a_ui_for_countdown/ ), mutta siellä kukaan ei tykännyt tästä, meidän on nyt täällä Suomi24:ssa pidettävä yhtä köyttä!
Vastaukset 14
Vanhimmat
Dragsteri: https://codepen.io/minkkilaukku/full/aMMvXz
Raahamalla kaahaamalla. Splitteriä myös.
Reacti-meakti: https://codepen.io/minkkilaukku/full/WmBrzg
Kliksuttelulla voittoon!
Operaation valinta säilyy, palikat klikataan.
Taipperi-paipperi: https://codepen.io/minkkilaukku/full/PLrWZr
Mitäpä jos lasku vaan kirjotettas?
Tässä on muuten nyt mukana myös säännöissä vaadittava tarkastus, että jokainen välivaihe on positiivinen kokonaisluku.
Sen verran voisit helpottaa ettei tuossa tuloksen saamisessa tarvitse pilkullisia lukuja käsitellä. Miten noita kukaan voi muistaa (5÷3=1,6667). Näin tehtävän ratkaisu helpottuu, ja koodin teko vaikeutuu, no jaa, eipä se taida ohjelman teko siitä vaikeammaksi mennä, kun lausekkeen muodostaa pistämällä randomia operandi ja operaattorin valintaan ja seuraamalla ettei missään vaiheessa lasketajärjestystä noudattaen tulos ole liukuluku. Eli uusiksi meni koko homma, tehtävä palaa bumerangina takasin pöydällesi.
Oikeastaan vaikeustasolla helvetin vitun vaikea, voisi olla 5 operandia ja 4 operaattoria ja 1 likukuluvullinen välitulos.
Olihan se mulla tossa. Puu käydään läpi post-ordeerissa, jotta pahat lapset löytyy ensin. Noissa aikaisemmissa ratkaisuissa se unohtui, mutta niissähän se olis vielä helpompi laittaa, kun joka kerta kun muodostetaan blockki (eli siis operaatio), testattas onko se laillinen.
Näyttäs CodePen olevan nyt liaan ruuhkanen, jokos täältä meni niin moni kattomaan?!? :DD
En nyt saanut tuota helpotus tarvetta oikein kerrottua selvästi, yritän uudestaan.
Käytettävissä olevat luvut alussa: 25 50 2 10 10 8
Jos minä nyt alan rakentamaan lauseketta näin:
25
Minulla on valittavissa luvut 50 2 10 10 8 tuhon merkin taakse, joten jatkan
25 50 ÷
Valinnoista tulisi nyt poistua tuo numero 8 koska 50 ÷ 8 = 6,25 eli tämä olisi laiton välitulos, ja niin ollen valittaviksi jäävät numerot olisi: 2 10 10
Ymmärsitkö nyt?
Vasta sillä helvetin vitun vaikea taso voitaisiin kerran hyväksyä tuollainen liukuluvullinen välitulos.
Ai nii, jos päivitettäs niitä näytettäviä lukuja sitä mukaa kun käyttäjä kirjoittaa lauseketta? Ja samallahan sen vois suoraan muuttaa inputin vaikka punaseksi, jos lauseke on epäkelpo tai käyttää lukuja joita ei ole.
Just noin, sillä ihmisen lasketateho on hyvin rajallinen, ja kiinnostavuus katoaa jatkuvista epäonnistumisista.
Lisäsin nyt noita ominaisuuksia. Kokeilkaapa löytyykö mitään bugeja vaan ois..?
Nyt on solve-ominaisuus ja voi syöttää myös omat haluamansa luvut ja targetin.
https://codepen.io/minkkilaukku/full/PLrWZr
Keksittekö muuten hyviä algoritmeja tuohon ratkaisemiseen? Tolla mun se saattaa joskus vähän kestää (ei nyt useampia sekunteja ainakaan ikinä sattunut viemään mitä ihan manuaalisesti testasin, mutta kuitenkin).
Kävin jo tuolla eilen kaselemassa, ja pythonilla aloittelin hakemaan ratkaisijaa, joutu jättämään kesken mutta sen verran asia kiehtoo että jatkan kuhan kerkiän. Tuossa ratkaisijassa käytin tuota pyhonin combinations laajennosta. Tämä ratkaisuhan pyörii noiden Variaatio, Kombinaatio ja Permutaatiot termien ympärillä.
https://i.postimg.cc/rp89fJTf/P-te-100.png
Nythän tuo on jo valmiin näköinenkin
Miksi?