Como dividir uma string em substrings consecutivos de comprimento, no máximo, 3 de todas as maneiras possívei

Estou tentando pegar uma string, entre os comprimentos 1 e 10, e gerar todas as formas possíveis de dividir a string em substrings consecutivos dos tamanhos 1, 2 ou 3. Por exemplo:

Input: 123456

Divida o número inteiro em caracteres individuais e prossiga para encontrar combinações. O código retornaria todas as seguintes matrize

    [1, 2, 3, 4, 5, 6]  
    [12, 3, 4, 5, 6]  
    [1, 23, 4, 5, 6]  
    [1, 2, 34, 5, 6]  
    [1, 2, 3, 45, 6]  
    [1, 2, 3, 4, 56]  
    [12, 34, 5, 6]  
    [12, 3, 45, 6]  
    [12, 3, 4, 56]  
    [1, 23, 45, 6]  
    [1, 2, 34, 56]  
    [1, 23, 4, 56]  
    [12, 34, 56]  
    [123, 4, 5, 6]  
    [1, 234, 5, 6]  
    [1, 2, 345, 6]  
    [1, 2, 3, 456]  
    [123, 456]  
    [1, 23, 456]  
    [1, 234, 56]  
    [12, 345, 6]  
    [12, 3, 456]  
    [123, 4, 56]  
    [123, 45, 6]

Estou tentando fazer isso em rubi. Obrigado

questionAnswers(3)

yourAnswerToTheQuestion