Kirjautuminen

Haku

Tehtävät

Koodivinkit: QB: Kirosananetsijä

Kirjoittaja: herkko; viimeksi muokattu 27.05.2004.

Tagit: merkkijonot

Väänsin tälläisen koodin alkeellisilla qb-taidoillani, joten varmaan tätä saa vielä paranneltua ja lyhenneltyä yms.
Mutta siis ideahan on, että käyttäjä kirjoittaa tekstin, jonka jälkeen koodi käy sen silmänräpäyksessä läpi. Mikäli se löytää tekstistä sanastoonsa määritellyn kirosanan, se ilmoittaa siitä käyttäjälle.
Koodi löytää kirosanat jotka ovat joko erillisiä sanoja (esim. vittu) tai jotka ovat jonkin "sanan sisällä" (esim. (höpöhöpövittupööpöö). Valitettavasti sensuroituja tai pätkittyjä sanoja se ei löydä (esim. v*ttu tai vit tu tai vit-tu).

Ehkäpä kukaan ei tarvitse tätä juuri kirosanojen etsimiseen, mutta jos jonkun tarvitsee saada ohjelmaansa toiminto hakemaan tietyntyyppisiä sanoja/merkkijonoja niin koodin muokkaaminen on keksitty ja käyttäminen vapaata ;).

Pistäkääpä kommenttia ja kertokaa myös, onko joku saanut värkättyä täysin erehtymättömän kirosananetsijän (huomaa myös pätkityt ja sensuroidut sanat). :)

'T?m? koodi tarkistaa k?ytt?j?n kirjoittman tekstin etsien siit? kirosanoja
'Tarkistuksen lopuksi koodi ilmoittaa, l?ytyik? kirosanoja vai ei. Koodi
'osaa etsi? kirosanoja, jotka ovat joko kokonaisia sanoja (esim. "vittu")
'tai jotka ovat tavallaan kirjainten v?liss? (esim. "h?k?l?k?vittuh?p?h?p?")
' sensuroituja kirosanoja (esim. "v*ttu") tai p?tkittyj? kirosanoja (esim.
'"vit-tu" tai "vit tu") se ei valitettavasti l?yd? :(. Mutta kyll? t?m?
'mielest?ni aika hyvin "bongaa" kirosanoja. Omia kirosanoja voi lis?t?
'kohdassa "seuraavakirosana:".

CLS
INPUT "Kirjoita analysoitava teksti: ", teksti$
seuraavasana:
sana$ = ""
kiromerkki = 1
GOTO seuraavakirosana
tarkista:
DO

  merkki = merkki + 1
  merkki$ = LCASE$(MID$(teksti$, merkki, 1))

  IF merkki$ = MID$(kirosana$, kiromerkki, 1) THEN  'ohjelma huomaa tekstiss? kirjaimen, joka saattaa kuulua kirosanaan
    sana$ = sana$ + merkki$
    kiromerkki = kiromerkki + 1
    ELSE 'mik?li ohjelma on aiemmin ep?illyt jotain sanaa, joka ei olekaan kirosana, se havaitsee nyt virheens?
         'ja est?? bugin, joka saattaisi p??st? l?pi esim. sanan "vitvittu"

    IF kiromerkki > 1 THEN
      kiromerkki = 1
      sana$ = ""
      merkki = merkki - 1
    END IF
  END IF

 IF LCASE$(sana$) = kirosana$ THEN  'ohjelma huomaa tekstiss? kirosanan ja huomauttaa siit?
    PRINT "Lause sis?lt?? yhden tai useamman kirosanan."
    SLEEP
    END
 END IF

LOOP UNTIL merkki = LEN(teksti$)

merkki = 0
seuraavakirosana:  'katsotaan, mit? kirosanaa haetaan tekstist? seuraavaksi
kirosanojenmaara = 10 ' muista aina muuttaa t?t? lukua, mik?li lis??t/poistat kirosanoja!!
kirosana = kirosana + 1
IF kirosana = 1 THEN kirosana$ = "vittu"
IF kirosana = 2 THEN kirosana$ = "saatana"
IF kirosana = 3 THEN kirosana$ = "perkele"
IF kirosana = 4 THEN kirosana$ = "paska"
IF kirosana = 5 THEN kirosana$ = "jumalauta"
IF kirosana = 6 THEN kirosana$ = "helvetti"
IF kirosana = 7 THEN kirosana$ = "fuck"
IF kirosana = 8 THEN kirosana$ = "shit"
IF kirosana = 9 THEN kirosana$ = "wtf"
IF kirosana = 10 THEN kirosana$ = "vitu"

IF kirosana < kirosanojenmaara + 1 THEN 'ohjelma tarkistaa, onko sen tarkastettava viel? jokin kirosana/jotkin kirosanat.
                      'jos on, se hypp?? tarkistamaan niit?
  sana$ = ""
  kiromerkki = 1
  GOTO tarkista

  ELSE 'Mik?li tekstist? on kaikki kirosanat tarkistettu, eik? mit??n ole l?ytynyt,
       'ohjelma lopettaa tarkistuksen ja ilmoittaa, ettei mit??n l?ytynyt
  PRINT "Lauseesta ei l?ytynyt kirosanoja."
  PRINT LCASE$("Vittu")
  SLEEP
  END
END IF

'Mikäli käytät tätä koodia jossakin, niin olisi kiva (mutta ei välttämätöntä) jos laittaisit nimeni (Jare) ja osoitteeni (www.kpelit.se8.org) johonkin kohtaan ohjelmaa/peliä/kommenttina sen koodia. Joo.

Kommentit

Antti Laaksonen [27.05.2004 21:32:38]

Lainaa #

Kirosanojen etsiminen on vaikeaa, minkä vuoksi on hyvä, että ohjelma pelkästään huomauttaa epäillystä kirosanasta käyttäjälle eikä koeta poistaa sitä. Suurimpana vaikeutena on tietää, onko pitemmän sanan osana oleva "kirosana" kirosana. Esim. lause "Muuta ei tarvittu." ei toki ole kiroilua...

hunajavohveli [27.05.2004 22:01:59]

Lainaa #

Kirosanat olisi kätevintä tallentaa taulukkoon, niin ei tarvitsisi tuota "If kirosana = .."-ketjua. Parilla pikku tempulla pääsisi helposti eroon myös GOTO:sta ja rivilaabeleista. Sinänsä kätevä etsijä, mutta eikös QB:ssä ole myös INSTR-funktio, joka hoitaisi tuon?
Edit: Alkuperäisen QB:n käyttäjälle tuo tapa on kyllä hyvä.

herkko [28.05.2004 11:37:31]

Lainaa #

Joo, varmaan olisikin kätevää.. Sääli vain näitä alkeellisia qb:n taitojani (en tiedä paljon mitään taulukoista tai INSTR:stä)...

sooda [28.05.2004 16:34:22]

Lainaa #

Sovittu. :D ihan hyvä qb:n käyttäjille joop.

herkko [28.05.2004 16:41:48]

Lainaa #

Tosiaan en edes tullut ajatelleeksi tuota tehdessäni näitä "kirosanan sisältäviä" ei-kirosanoja :). (kuten siis yllä oleva "Sovittu").

miiro [11.12.2005 19:50:35]

Lainaa #

Ripaska on tanssi.

moptim [22.08.2006 20:07:01]

Lainaa #

Antti Laaksonen kirjoitti:

Esim. lause "Muuta ei tarvittu." ei toki ole kiroilua...

Noin tekee RuneScapekin, paitsi että se sensuroi koko sanan "tarvittu", ja silti mä pelaan (harvakseltaan) sitä.
EDIT: Vähän tyhmää näin vanhaan vinetä, mutta en pelaa enää :)

Juhko [13.01.2007 21:22:23]

Lainaa #

Eikö RuneScape ole enkunkielinen, vai ymmärtääkö se suomenkielisetkin kirosanat?

moptim [22.05.2007 19:33:11]

Lainaa #

Ymmärtää sen karvakolmion nimityksen ja sitten sen ukkosenjumalan (ukkosenjumalista en ole varma). Mutta in engelsmann se ymmärtää kyllä (esim. uloste enklanniksi) ym.

Dude [25.07.2007 13:40:18]

Lainaa #

"paska" ei aina ole kirosana. eikö tuon sais jotenki lyhennettyä.

sammakkomies [06.12.2009 04:56:21]

Lainaa #

tämä on tarpeellinen keskustelupalstoilla ymsp saattaa joillaki alkaa *sisälsi 1 tai useamman kirosanan*ttaa.

Jaska [24.08.2017 21:35:13]

Lainaa #

Ulkomaalaisilla voi olla nimenä suomalainen kirosana, jonka vuoksi automaattinen sensurointijärjestelmä voi olla vaikea tehdä. Esimerkiksi https://fi.wikipedia.org/wiki/Pavel_Paska ja https://fi.wikipedia.org/wiki/Edo_Pillu .

Grez [24.08.2017 22:15:29]

Lainaa #

Ei siinä tarvitse edes eri kieliä sekoittaa että automaattisensurointi alkaa kusta. Yksi englanninkielinen klassikko"sievistely" on peli Buttbuttins Creed :D

herkko [26.08.2017 10:39:13]

Lainaa #

Jaaha, vieläkö tää mun "koodivinkki" on elossa? :D Tuli sähköpostiin ilmoitus kommenteista. Hyvä jos kolmetoista vuotta vanha koodi vielä saa keskustelua aikaan :D.

Kirjoita kommentti

Muista lukea keskustelun ohjeet.
Tietoa sivustosta