#!/usr/bin/ruby # # Quick hack to rewrite text, preserving first and last letter of each # word but messing up the middle of the word. This version just reverses # the middle, it should really randomise it. # # author: danbri@w3.org # $Id: rejig.rb,v 1.3 2003/09/12 22:41:30 danbri Exp $ # http://www.w3.org/People/Bos/Shuffle/shuffle.c # in python: s[0] + permute(s[1:-1]) + s[-1] # thanks to Ged and oGMo from #ruby-lang # # ged's: class String def permute! self.length.times do |i| p = rand(self.length - 1) self[i], self[p] = self[p], self[i] end return self end def permute self.dup.permute! end end # ogmo's: class String def strfry a = (0..self.size).to_a self.gsub(/./) { self[a.delete_at((rand*a.size).to_i),1]; } end end # and a 3rd version :) # class Array # def shuffle # each_index {|j| i = rand(size-j); self[j], self[j+i] = self[j+i], self[j]} # end # end # puts "foobarbaz".split(//).shuffle.join('') def rejig(text) return '' if text==nil return text.permute! ## return text.reverse end file = ARGV[0] file='text.txt' if file==nil #puts file; text = File.new(file).read puts text+"\n\n" words = text.split new=[] words.each do |word| # puts "Input: #{word}" word =~ /^([^\w]*)(\w)(.*)(\w)([^\w]*)$/ p1=$1 first=$2 middle=$3 last=$4 punc=$5 # puts "word: #{word} First: #{first} middle: #{middle} last: #{last}\n\n" jumble=rejig(middle) # puts "NEW is: #{p1}#{first}#{jumble}#{last}#{punc}" new.push "#{p1}#{first}#{jumble}#{last}#{punc}" end puts new.join(' ')