All pastes #160098 Raw Edit

Someone

public text v1 · immutable
·published 2006-09-03 21:13 UTC
rendered paste body
on *:text:Markov*:*: {
  if ($2) {
    %msgto = $chan
    %markov.new = [ $ $+ [ $rand(2,$0) ] ]
    %i = 0
    while (!$readini(markov.ini,null. $+ %markov.new, 1)) {
      if (%i > $0) { msg # Sorry, I can't understand that! | unset %markov.new | break | haltdef }
      inc %i 1
      %markov.new = [ $ $+ [ $rand(2,$0) ] ]
    }
    if (%markov.new) { doMarkov %markov.new }
  }
  else {
    %msgto = $chan
    doMarkov
  }
}
alias doMarkov {
  var %mc.limit = 400
  var %mc.rstep = 0
  var %mc.rn1 = null
  var %mc.rn2 = null
  if ($1) { %mc.rn2 = $1 | %firstfix = $1 }
  var %mc.rstring
  while (%mc.rstep <= %mc.limit) {
    inc %mc.rstep
    var %mc.rlmao = % $+ %mc.rn1 $+ . $+ %mc.rn2 $+ .step
    var %mc.rand = $rand(1, [ [ %mc.rlmao ] ])
    var %mc.rnext = $readini(markov.ini, [ %mc.rn1 ] $+ . $+ [ %mc.rn2 ], %mc.rand)
    var %mc.rstring = %mc.rstring %mc.rnext
    var %mc.rn1 = %mc.rn2
    var %mc.rn2 = %mc.rnext
    if ( %mc.rn2 == $null ) {
      /break    
    }
  }
  ; var %cat.end = $false
  ;while (%cat.end == $false) {
  ; inc %cat.step
  ;if ($gettok(%mc.rstring, %cat.step, 32) == $null) {
  ; /break
  ;}
  ; if ($readini(markcat.ini, $gettok(%mc.rstring, %cat.step, 32), place) == holder) {
  ; inc % $+ $gettok(%mc.rstring, %cat.step, 32) $+ .step
  ;/writeini markcat.ini $gettok(%mc.rstring, %cat.step, 32) % $+ $gettok(%mc.rstring, %cat.step, 32) $+ .step %mc.rstring
    /msg %msgto %firstfix %mc.rstring
    unset %firstfix
}
on *:TEXT:*:*: {
  if (%collect == $false) {
    /halt
  }
  var %mc.string = $1-
  var %strip.step = 33
  while ( %strip.step <= 47 ) {
    var %mc.string = $replace(%mc.string, $chr(%strip.step), $null)
    inc %strip.step
  }
  var %strip.step = 58
  while ( %strip.step <= 64 ) {
    var %mc.string = $replace(%mc.string, $chr(%strip.step), $null)
    inc %strip.step
  }
  var %strip.step = 91
  while ( %strip.step <= 96 ) {
    var %mc.string = $replace(%mc.string, $chr(%strip.step), $null)
    inc %strip.step
  }
  var %strip.step = 123
  while ( %strip.step <= 255 ) {
    var %mc.string = $replace(%mc.string, $chr(%strip.step), $null)
    inc %strip.step
  }
  if ( $numtok(%mc.string,32) < 3 ) {
    /halt
  }
  ;var %mc.len = $len($1-)
  var %end.reach = $false
  var %mc.n1 = null
  var %mc.n2 = null
  var %mc.step = 0
  while (%end.reach == $false) {
    inc %mc.step
    inc % $+ [ %mc.n1 ] $+ . $+ [ %mc.n2 ] $+ .step
    var %mc.next = $replace($gettok(%mc.string, %mc.step, 32), $chr(44), $null)
    if (%mc.next == $null) {
      /break
    }
    set %mc.lmao % $+ %mc.n1 $+ . $+ %mc.n2 $+ .step
    /writeini -n markov.ini [ %mc.n1 ] $+ . $+ [ %mc.n2 ] [ [ %mc.lmao ] ] %mc.next
    var %mc.n1 = %mc.n2
    var %mc.n2 = %mc.next
  }
}