jling
                
              
                
              
                  
                  
              1
              
             
            
              it’s that time of the year again, say we have:
467..114..
...*......
..35..633.
......#...
617*......
.....+.58.
..592.....
......755.
...$.*....
.664.598..
in a file, and we want:
julia> mapreduce(permutedims∘collect, vcat, readlines("./a.txt"))
10×10 Matrix{Char}:
 '4'  '6'  '7'  '.'  '.'  '1'  '1'  '4'  '.'  '.'
 '.'  '.'  '.'  '*'  '.'  '.'  '.'  '.'  '.'  '.'
 '.'  '.'  '3'  '5'  '.'  '.'  '6'  '3'  '3'  '.'
 '.'  '.'  '.'  '.'  '.'  '.'  '#'  '.'  '.'  '.'
 '6'  '1'  '7'  '*'  '.'  '.'  '.'  '.'  '.'  '.'
 '.'  '.'  '.'  '.'  '.'  '+'  '.'  '5'  '8'  '.'
 '.'  '.'  '5'  '9'  '2'  '.'  '.'  '.'  '.'  '.'
 '.'  '.'  '.'  '.'  '.'  '.'  '7'  '5'  '5'  '.'
 '.'  '.'  '.'  '$'  '.'  '*'  '.'  '.'  '.'  '.'
 '.'  '6'  '6'  '4'  '.'  '5'  '9'  '8'  '.'  '.'
is there easier way to do this? I was hoping DelimitedFiles can split “everything” but I can’t get it to work
             
            
              
              
              1 Like
            
                
            
           
          
            
              
                jar1
                
              
              
                  
                  
              2
              
             
            
              julia> stack(collect.(readlines(b)); dims=1)
10×10 Matrix{Char}:
 '4'  '6'  '7'  '.'  '.'  '1'  '1'  '4'  '.'  '.'
 '.'  '.'  '.'  '*'  '.'  '.'  '.'  '.'  '.'  '.'
 '.'  '.'  '3'  '5'  '.'  '.'  '6'  '3'  '3'  '.'
 '.'  '.'  '.'  '.'  '.'  '.'  '#'  '.'  '.'  '.'
 '6'  '1'  '7'  '*'  '.'  '.'  '.'  '.'  '.'  '.'
 '.'  '.'  '.'  '.'  '.'  '+'  '.'  '5'  '8'  '.'
 '.'  '.'  '5'  '9'  '2'  '.'  '.'  '.'  '.'  '.'
 '.'  '.'  '.'  '.'  '.'  '.'  '7'  '5'  '5'  '.'
 '.'  '.'  '.'  '$'  '.'  '*'  '.'  '.'  '.'  '.'
 '.'  '6'  '6'  '4'  '.'  '5'  '9'  '8'  '.'  '.'
             
            
              
              
              
            
            
           
          
            
            
              
No need to collect:
stack(readlines(file); dims=1)
             
            
              
              
              8 Likes
            
            
           
          
            
              
                mkitti
                
              
              
                  
                  
              4
              
             
            
              I slightly prefer eachline over readline for AoC problems.
Also sometimes it helps to have something lime the following at the ready in case you need to customize processing.
julia> using Chain
julia> input = IOBuffer(raw"""
       467..114..
       ...*......
       ..35..633.
       ......#...
       617*......
       .....+.58.
       ..592.....
       ......755.
       ...$.*....
       .664.598..
       """);
julia> @chain input begin
           read
           Char.(_)
           reshape(_, findfirst(==('\n'), _), :)
           _[1:end-1, :]
           permutedims(_, (2,1))
       end
10×10 Matrix{Char}:
 '4'  '6'  '7'  '.'  '.'  '1'  '1'  '4'  '.'  '.'
 '.'  '.'  '.'  '*'  '.'  '.'  '.'  '.'  '.'  '.'
 '.'  '.'  '3'  '5'  '.'  '.'  '6'  '3'  '3'  '.'
 '.'  '.'  '.'  '.'  '.'  '.'  '#'  '.'  '.'  '.'
 '6'  '1'  '7'  '*'  '.'  '.'  '.'  '.'  '.'  '.'
 '.'  '.'  '.'  '.'  '.'  '+'  '.'  '5'  '8'  '.'
 '.'  '.'  '5'  '9'  '2'  '.'  '.'  '.'  '.'  '.'
 '.'  '.'  '.'  '.'  '.'  '.'  '7'  '5'  '5'  '.'
 '.'  '.'  '.'  '$'  '.'  '*'  '.'  '.'  '.'  '.'
I actually prefer to leave out the permutedims.