#Covering Array Tester #Braulio Joel Gonzalez Galvan #12 de julio del 2013 #Este programa lee un Array Binario de un archivo .txt #despues confirma si es o no un Covering Array puts"Ingresar la cantidad de las filas del arreglo (N)" n=gets().to_i puts"Ingresar directorio del archivo .txt" dir=gets().chomp #Funcion para encontrar el factorial *Just Beautifull* def factorial(n) return 1 if n.zero? 1.upto(n).inject(:*) end furby=n-1 zephir=(n.to_f/2).ceil carray=0 noro=0 k=factorial(furby)/(factorial(furby-zephir)*factorial(zephir)) base=Array.new for i in 0..n-2 base[i]=i end base=base.combination(zephir).to_a #Empty covering array arr=Array.new for i in 0..furby arr[i]=Array.new() for j in 0..k-1 arr[i][j]=0 end end #Se lee el archivo de texto con la matriz #y se convierte en un arreglo bidimensional f = open(dir) file = File.read(dir) arr= file.scan(/\d+/) arr.collect! &:to_i arr=arr.each_slice(k).to_a puts("El arreglo leido es:") for i in 0..n-1 for j in 0..k-1 print(arr[i][j]) end print("\n") end bulky=Array.new for i in 0..k-1 bulky=arr.map {|row| row[i]} if (bulky.count(1)==zephir) carray=carray+1 end end puts("\n") for i in 0..n-1 if (arr[i].count(0)==k) noro=1 end end if (carray==k && noro==1) puts("Este es un Covering Array!") exit end puts("No es un Covering Array")