Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Neronleimaukset

Sivun loppuun

Grey [20.10.2004 09:42:23]

#

Ajattelin tässä alkaa kysymään että millaisia neronleimauksia teille on tullut esim. ohjelmoitaessa, kun olette miettineet jotain oikein isoa ongelmaa ja sitten vain yhtäkkiä keksineet ratkaisun? Tuli tälläinen itselleni mieleen kun mietin äsken kuinka voin kääntää binaarisarjan sellaiseksi että se olisi käänteinen. Eli 1001 > 0110.

Ratkaisu oli yllättävän simppeli. Piti vain ensin muuttaa ascii-merkin, käsittelin nimittäin tavuja kahdeksana, arvo negatiiviseksi ja lisätä siihen 255. Eli näin:
127 - 127 - 127 + 255 = 128
Simppeli kaava, tosin minun matematiikan taidoillani sen tajuaminen oli ihme. Nimittäin en ole mikään nero matematiikassa.. Heh..

Eli tälläisen ratkaisun itse sain aikaan johonkin ongelmaan. Jos muilla on ollut jotain vastaavia ongelmia ja olette keksineet jonkun ratkaisun, niin postaus vain tänne. Älkääkä pitäkö tätä aihetta turhana. Päinvastoin! Nimittäin joku muu saattaa juuri nyt painia jonkun sellaisen ongelman kanssa jonka joku teistä on jo ratkaissut. Jotenka näin ollen ongelman ja ratkaisun postaaminen tähän aiheeseen siis saattaa auttaa jotakuta tätä lukevaa ^__^

-Grey-

tejeez [20.10.2004 09:50:38]

#

En nyt muista mutta onhan noita tollasia tullut keksittyä ainakin ku on 6502:lle koodaillu ;)

sooda [20.10.2004 09:56:16]

#

Kappas. Itekin just ihmettelin että miten saa biteillä väännettyä erästä ongelmaa. Tyyliin jos jokin juttu käsittelee vaikka unsigned longia, ja vb:ssä se on signed, niin -1 on isoin luku koska siinä on kaikki bitit päällä. Se piti kuitenki saada unsignediksi.

Kehittelimpä tähän sitte hommelin miten saa unsignedin signediksi. Siis ei -1 -> 1 vaan -1 -> (isoin unsigned minkä saa kaikilla käytettävillä biteillä). Pähkäilin tota 3-bittisillä luvuilla ku ne on sopivan kokoisia =)

Signedmömmö.txt:

Bittihommeli!
bitit|unsigned|signed
000 | 0 | 0
001 | 1 | 1
010 | 2 | 2
011 | 3 | 3
100 | 4 |-4
101 | 5 |-3
110 | 6 |-2
111 | 7 |-1
Kappas vaan. Etumerkin vaihto: (not n) + 1
-> unsigned: 2 ^ bitit + n jossa n negatiivinen bitit-bittinen luku eli tyyliin 2 ^ 3 - 1 = 8 - 1 = 7. Katso taulukosta: toimii.

Kekkasin etumerkin vaihdonkin samalla =)

thekoodaaja [20.10.2004 10:10:17]

#

Aamulla siis 2:00 heräsin ja ajattelin pistää HTML:ällä kellon sivuilleni niin, että se näyttää kuinka kauan olet ollut sivuillani. Sellaisella tavalla ilman mitään javaskriptausta vaan, että se hakee palvelimelta kellon ajan ja sitten se refressaa selaimen ja ilmoittaa kauan olet ollut sivuillani, mutta minuutin päästä muistinkin että se ei ilmoittaisi muuta kuin "0:0,00 tuntia sinä olet ollut sivuillani". Houm tämä oli ennen kuin sain sivu tilaa MBnetiltä.

Blaze [20.10.2004 10:24:16]

#

Grey kirjoitti:

kääntää binaarisarjan sellaiseksi että se olisi käänteinen. Eli 1001 > 0110.

Helpommin: Not x

Not-bittioperaatio kääntää bitit vastakkaisiksi.

Onnistuisi myös x Xor 255

Xor-bittioperaatio kun palauttaa ykkösen silloin, kun vertailtavat bitit ovat erejä ja nollan silloin, kun ne ovat samoja.

käännettävässä on molempia: 10011001
255:ssa pelkkiä ykkösiä:    11111111
tulos on käänteinen:        01100110

Kiinnostako nämä bittioperaatioasiat muuten muita, kuin Greytä? Näitä on meikäläisellä koulussa ollu, niin niistä vois osata jotain vaikka kirjottaa.

Edit: Ai, se tt-tagi ei toimikkaan keskustelun puolella.
thekoodaaja: WTF?

Meitsi [20.10.2004 11:59:34]

#

Mä kerran ajattelin tehdä sellaisen ohjelman joka soittaa piipperistä nousevaa ääntä tiettyyn rajaan saakka. Onnistuin kuitenkin sähläämään sen inifitelooppiin ja se piipperin ujellus ei sitten meinannutkaan loppua... Tietenkin menin heti ihan paniikkiin kun piipperi huutaa täysillä ja mutsikin alko huudella et "mitä sä meluat siellä" niin repäsin vaan äkkiä virrat koneelta... Sen koomin en ole piipperillä leikkinyt, niin karmea ujellus se oli. xD

sooda [20.10.2004 12:08:55]

#

meitsi: tee tällä pitkä 3456-Hz piippi ja väännä kajarit täysille :) (3456 on ikävä)

tsuriga [20.10.2004 12:30:32]

#

Joskus kun tuon laskimen (TI-86) kanssa pähkäilin, että miten saa merkkijonoja taulukoitua niin älysin käyttää merkkijonoa ja substr:ää, mikä nyt ei kyllä sinällään mikään neronleimaus ole :). "Could you define a penguin, please?" Visioita on sadellu erilaisia projekteja vääntäessä. Mietin tuossa, että voisipa tehdä PHP:llä textareaan syötetyistä pianonuoteista PDF:n tekevän skriptan, mutta ei itseltä ihan heti aika riitä. Siitä vain tekemään jos joku jaksaa :).

tejeez [20.10.2004 13:15:47]

#

sooda kirjoitti:

meitsi: tee tällä pitkä 3456-Hz piippi ja väännä kajarit täysille :) (3456 on ikävä)

on kai myös 3455Hz :(

Latska [20.10.2004 15:55:46]

#

Omaan herätyskelloprojektiin piti saada joku päivämäärännäyttösysteemi, mutta QB näyttää päiväykset muodossa kk-pp-vvvv. Niin tietysti LEFT$ ja RIGHT$ funkkareilla sain sen muotoon pp.kk.vvvv pisteillä erotettuna kiitos printille. :)

Juice [20.10.2004 18:46:41]

#

Meitsi kirjoitti:

Mä kerran ajattelin tehdä sellaisen ohjelman joka soittaa piipperistä nousevaa ääntä tiettyyn rajaan saakka.

Siis jotain näin helppoako:

#include <windows.h>
int main(){
    int i = 0;
    /* Soitetaan 7000 hertsiin saakka 400 hz:n välein */
    for(i=0; i<=7000; i+=400){
        /* Rimpautetaan taajuudella i 100 ms ajan */
        Beep(i, 100);
    }
}

Queq [20.10.2004 19:03:05]

#

Nämä neronleimauksethan ovat juuri hauskinta ohjelmoinnissa. Se tunne kun ymmärtää jotain mitä ei ole aikaisemmin ymmärtänyt. Aah..

Meitsi [20.10.2004 19:37:14]

#

Juice kirjoitti:

Meitsi kirjoitti:

Mä kerran ajattelin tehdä sellaisen ohjelman joka soittaa piipperistä nousevaa ääntä tiettyyn rajaan saakka.

Siis jotain näin helppoako:

#include <windows.h>
int main(){
    int i = 0;
    /* Soitetaan 7000 hertsiin saakka 400 hz:n välein */
    for(i=0; i<=7000; i+=400){
        /* Rimpautetaan taajuudella i 100 ms ajan */
        Beep(i, 100);
    }
}

jotain tänne päin (a muuttujaa ei suurenneta):

#include <windows.h>

int a;
int b;

int main()
{
    while(a<10)
    {
       beep(b, 100);
       b++;
    }
}

EDAUS: Unhoitin tägit

Bloody Killer [20.10.2004 19:51:23]

#

Roomanpalo oli muuten aika suuri Nero:n leimaus :) Onhan noita joitain pieniä juttuja tullu keksittyä ja sen kun keksii ilman muitten apua niin siintä tulee aivan järjettömän hyvä fiilis.

VbMan [20.10.2004 20:23:19]

#

Onhan niitä "Ahaa" elämyksiä tullut, varsinkin kun keksin miten pelistäni sai karsittua 400 riviä pois!
Tuli vähän optimoinnin tarvetta kun ei jäkismanageripeli toiminut Athlon XPm 3000+ suorittimella ja 512 megalla muistia...

T.M. [22.10.2004 18:06:06]

#

Grey kirjoitti:

127 - 127 - 127 + 255 = 128
Simppeli kaava, tosin minun matematiikan taidoillani sen tajuaminen oli ihme. Nimittäin en ole mikään nero matematiikassa.. Heh..

Täh... ite oon tehny: 255 - 127 = 128

Siis puhuttiinko tässä tyhmistä neronleimauksista?
Noh, onhan niitä minunkin puolesta tullut monen monta kappaletta :-D

Grey [22.10.2004 18:38:21]

#

T.M. kirjoitti:

Täh... ite oon tehny: 255 - 127 = 128

Siis puhuttiinko tässä tyhmistä neronleimauksista?
Noh, onhan niitä minunkin puolesta tullut monen monta kappaletta :-D

Mikään neronleimaus ei ole tyhmä, ennenkuin joku keksii paremman ratkaisun. Tässä tapauksessa tuo ratkaisu on vielä parempi kuin omani. Tai, noh, ainakin simppelimpi. Vaan kuten sanottu, en ole mikään nero matematiikassa ^__^

Tällä hetkellä haen neronleimausta siihen että miten saada pitkät for-silmukat nopeammiksi, nimittäin Qbasicissa. Kun kokonaisluvuiksikaan muuttaminen ei enää tuo nopeutta. Sen vertaa pitkä for-silmukka, eikä sitä voi yhtään lyhentää kun kaikki siinä on kuitenkin tarpeellista.

-Grey-

rndprogy [22.10.2004 18:45:08]

#

Minä tein kerran että 1*(muuttuja+1)/(muuttuja+1) :D .Kesti jopa aika kauan huomata että pelkkä 1 riittää.

Sami [22.10.2004 18:59:09]

#

eilen kirjoitettua java-koodia:
public void sleep (long time) {


Koodi siis oli ihan niin kuin pitikin, mutta kesti muutama sekunti, ennen kuin tajusin tuon rivin huvittavuuden :D

joekool [23.10.2004 03:26:03]

#

"Coder's high"


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta