Buscar

Categorías


Ever played in casinos? Let us help you find the best places to play roulette online for the first time! Enjoy also a game with the free slots, blackjack, poker and win the jackpot!



Mis TumbleLogs más recientes:


Playlists para Blackberry· 1. August 2008, 23:53

El sístema 4.5 de BB permite playlists y cuando analicé el archivo que genera ví que es simplemente una lista con los nombres de los archivos, el detalle es que las generadas por la BB tienen antes la dirección local, por lo que no se puede usar la misma playlist cuando está conectada a la compu. Simplemente fue cuestion de quitarle la informacion de file:// y hacer una playlist con direcciones relativas. No hay problema.

Después llegué al siguiente issue: Tengo varios podcasts en mi blackberry que se tienen que escuchar en orden. El detalle es que para el sistema operativo el del “Archivo 10.mp3” sigue el “Archivo 100.mp3”. La solución está en generar la playlist ordenando de acuerdo al número; y no al código ASCII. Ya entrado en gastos en el proceso puede ser útil renombrar los archivos en masa, así que de una vez agregué esa función aquí va mi programita. (Este es un excelente candidato para agregarle una GUI con shoes, así que ya tengo dos)

#Clases para generador de playlists y renombrar archivos
class M3u
  def initialize(dir,selector,lista_archivos=nil,real=false,verbose=true)
    if lista_archivos
      @archivos=lista_archivos
    else
      @dir=dir
      @selector=selector
      genera_lista_archivos
    end
    @real=real
    @verbose=verbose
  end
  def genera_lista_archivos
    Dir.chdir(@dir)
    @archivos=Dir.glob(@selector)
  end
  def renombra(original,reemplazo)
    @archivos.map! do |filename|
      newfilename=filename.gsub(original,reemplazo)
      puts "#{filename}->#{newfilename}" if @verbose
      File.rename(filename,newfilename) if @real
      newfilename
    end
  end
  def ordena(regex)
    lista={}
    @archivos.each do |filename|
      filename.match(regex)
      lista[Regexp.last_match(1).to_i] = filename # después de cualquier uso de regexp, 
      #los grupos guardados entre parentesis quedan en last_match
    end
    @archivos=lista.sort.map {|a| a[1]} #como el hash quedó con el numero y luego
    #el nombre de archivo, queremos el segundo elemento. Lista sort genera un array
    puts "Ordenada", @archivos if @verbose
  end
  def genera_playlist(name)
    if File.exist?(name)
      puts "Ya existe" #Y??? dales opcion para reemplazarla
    else
      f = File.new(name,"w")
      @archivos.each {|a| f<<a.gsub("\ ","%20")+"\n"} #la playlist no puede tener espacios en el nombre los cambiamos por %20 como en la web
      f.close
    end
  end
end
if __FILE__==$0
  RENAME=false
  REAL=false
  VERBOSE=true
  directorio='H:\BlackBerry\music\podcasts\ '#el espacio final es para 
  #que no tome \' como escape y así evitamos usar " y tener que escapar todos los espacios y \
  directorio='H:\Blackberry\music\podcasts\Chinese '
  selector_archivos="*.mp3"
  original=Regexp.new("Starting Out in Chinese ")
  replacement="chinese "
  #~ orden=Regexp.new("([0-9]{2})") #exactamente 2 dígitos
  #~ orden=Regexp.new(/e(\d)/) #una e seguida de un dígito y solo tomamos el dígito para ordenar
  orden=Regexp.new("([0-9]{2,3})") #entre 2 y 3 dígitos
  a=M3u.new(directorio,selector_archivos,nil,REAL,VERBOSE)
  a.renombra(original,replacement) if RENAME
  a.ordena(orden)
  a.genera_playlist(replacement.chop+".m3u") #este chop es un horror, mejorar
end

Tienes algo que decir?


Status 2 / "Batch"· 31. July 2008, 23:47

Ya tengo varios tests hechos con shoes y ya debería poder hacer agregarle GUI al ahorcado, pero no lo he hecho. Algún día… Mientras tanto aquí hay una “batch file” en ruby que usé para bajar los archivos de una radio novela que sacaron los de Licuado .

#!/usr/bin/ruby -w
(1).upto(20) { |num|
        comando="wget -nd http://www.rmx.com.mx/contenido_gral/\
images/podcasts_descargas/Conejo%20Mendoza%20"+"%02d"\
%num+".mp3"
        puts(comando)
        system(comando)
}

Tienes algo que decir?


Status· 13. July 2008, 22:47

Si retomé la programada Aunque no he hecho ningún programa digno de postearse. Así que aquí vá un update general.

Tienes algo que decir?


Programación: Ahorcado· 1. June 2008, 15:44

Esta es una versión de ahorcado que hice el mes pasado mientras esperaba que Z terminara de trabajar en su cierre. Hasta eso esta entretenido. Lo más tardado fué encontrar un diccionario decente y usable en formato de texto

require 'Win32API'
def getkey
  (Win32API.new("crtdll", "_getch", [], "L").Call)
end
DEBUG=nil
INTERACTIVE=1
SHOW_ON_LOSE=1
class Ahorcado
  ETAPAS=['','O','O+','O+-','O+-/','O+-<']
  LETRAS=('a'..'z').to_a
  def initialize
    @etapa=0
    @dicc=genera_diccionario
    @palabra=elegir_palabra
    @preguntadas=[]
    @estatus=0
    p @palabra if DEBUG
  end
  def juega
    puts self
    while @estatus==0
      letra=obtener_letra
      turno(letra)
    end
    puts "\nLa palabra era #{@palabra.join().upcase}" if (@estatus==-1 and SHOW_ON_LOSE)
    return @estatus
  end  
  private
  def genera_diccionario
    File.open("diccionario.txt","r").read.split(' ')
  end
  def obtener_letra
    if INTERACTIVE
      print "Siguiente letra: "
      x=getkey.chr
      puts x
      puts
      x
    else
      LETRAS[rand(LETRAS.length)]
    end
  end  
  def turno(letra)
    @preguntadas.push(letra)
    @etapa+=1 unless @palabra.include?(letra)
    puts self
    @estatus=evaluar_posicion
  end
  def to_s
    st=""
    @palabra.each do |a| 
      st+= @preguntadas.include?(a) ? "#{a} " : "_ "
    end
    st+="  "+ETAPAS[@etapa]+"\nPreguntadas: "+@preguntadas.uniq.sort.join(" ")+"\nFaltan: "+(LETRAS-@preguntadas).join(" ")+"\n"
  end
  def elegir_palabra
    return @dicc[rand(@dicc.length)].downcase.split("")
  end
  def evaluar_posicion
    return 1 if (@palabra-@preguntadas).empty?
    return -1 if @etapa==ETAPAS.length-1
    return 0
  end
end
if __FILE__ == $0
  while true
    puts "Juguemos a.... Ahorcados"
    x=Ahorcado.new
    r=x.juega
    puts "Ganaste!" if r==1
    puts "Perdiste!" if r==-1
    puts "\nJugar de nuevo? (s/n)"
    break unless getkey.chr.downcase == "s"
  end
end

Tienes algo que decir?


Project Euler 18· 28. February 2008, 16:39

Otro que se puede resolver por fuerza bruta. Brutal tambien es el codigo. Estaria un poco menos peor si incluyera todo en una clase para que no se vea tan fea la variable global @resultado

Problema 18

st=<<STEND
75
95 64
17 47 82
18 35 87 10
20 04 82 47 65
19 01 23 75 03 34
88 02 77 73 07 63 67
99 65 04 28 06 16 70 92
41 41 26 56 83 40 80 70 33
41 48 72 33 47 32 37 16 94 29
53 71 44 65 25 43 91 52 97 51 14
70 11 33 28 77 73 17 78 39 68 17 57
91 71 52 38 17 14 91 43 58 50 27 29 48
63 66 04 68 89 53 67 30 73 16 69 87 40 31
04 62 98 27 23 09 70 98 73 93 38 53 60 04 23
STEND
@resultado=Array.new  
def traverse(array,y=0,x=0,valor=0) #x y y estan cambiados porque asi lo toma ruby, el primer indice es la fila y el segundo la columna
  if (y==(array.length-1))
    @resultado.push array[y][x]+valor 
  else
    #~ puts array[y][x]
    #todos los elementos de una fila solo pueden ligarse a la siguiente con mismo numero o del numero siguiente (0 -> 0,1) (1->1,2)
    traverse(array,y+1,x,valor+array[y][x])
    traverse(array,y+1,x+1,valor+array[y][x])
  end
end
arr=st.split("\n").map{|a| a.split(" ").map{|b| b.to_i}}
#~ p arr
traverse(arr)
puts @resultado.max

Tienes algo que decir?


Articulos Anteriores