2012-03-25 3 views
0

мне нужна помощь, чтобы сцепить 2 ВАР в 1 вар, или любым другим способом, чтобы использовать что вары вместе ...Как сцепить это в Рубине

Мое намерение состоит в том, чтобы сделать искусство ASCii генератор, где он должен показать конкретное слово для его генерации ... в этом примере я только покажу слово «a», но я не могу, print funciont печатает содержимое var «([0,4])», мне нужно конкатенировать ВАР и обработать его как команда, а не как строка ...:

# encoding:utf-8 

threexfive = ' 
    #   #  ##  
## ### ### ### ### # ### 
# # # # # # # ## ### # # 
### ### ### ### ### # ## 
        ## ### 
' 

# The long of the letters a to f 
threexfive_longs = ' 
a=[0,4] 
b=[4,4] 
c=[8,4] 
d=[12,4] 
e=[16,4] 
f=[20,4] 
' 
string = '' 
word = 'a' 

word.each_char do |char| 
    $long = threexfive_longs.split(char).last.split(']').first.split('=').last + "]" 

threexfive.each_line do |type| 

    # This don't works: 
    string = type + $long 
    print string 


    # But this works :(
    # print type[20,4], type[0,4], type[8,4], type[16,4], "\n" 

end 
end 

Вот разница:

# This doesn't work: 
    string = type + $long 
    print string 

Выход:

Output

# But this works :(
    print type[0,4], "\n" 

Выход:

Output

ответ

6

Вы можете попробовать составить все строки по отдельности, а затем объединить их с join("\n"), как в следующем пример. Я настоятельно рекомендую использовать правильную структуру данных для позиций char (или «longs», как вы их называли). В этом примере я использовал хэш.

# encoding:utf-8 

threexfive = ' 
    #   #  ##  
## ### ### ### ### # ### 
# # # # # # # ## ### # # 
### ### ### ### ### # ## 
        ## ### 
' 

char_pos = { 
    :a => 0..3, 
    :b => 4..7, 
    :c => 8..11, 
    :d => 12..15, 
    :e => 16..19, 
    :f => 20..23 
} 

word = 'cafe' 

result = Array.new(threexfive.lines.count){''}  # array with n empty lines 
word.each_char do |char| 
    pos = char_pos[char.to_sym]      # get position of char 
    threexfive.lines.each_with_index do |line,index| 
    next if index == 0        # first line of threexfive is empty -> skip 
    result[index] << line[pos]      # compose individual lines 
    end 
end 
result = result.join("\n")       # join the lines with \n (newline) 

puts result          # print result 

выход этой программы:

  ##  
### ## # ### 
# # # ### ## 
### ### # ### 
     ##  
+0

большое спасибо так много !!! теперь я могу продолжить работу с proyect за вашу помощь. – ElektroStudios

+0

@ user1248295 Затем вы должны отметить этот ответ как принятый, небольшую отметку ниже стрелок для голосования. –

+0

извините, я этого не знал. THX снова – ElektroStudios

Смежные вопросы