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!
FJOM On The Run
Mis Bookmarks
Textpattern Forums
Textpattern
Bloglines
Ask Metafilter
Metafilter
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
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)
}
Si retomé la programada Aunque no he hecho ningún programa digno de postearse. Así que aquí vá un update general.
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
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
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