O desafio
Neste desafio, você deve executar duas tarefas diferentes (mas relacionadas), dependendo da ordem da entrada.
Seu programa receberá uma string s
e um número inteiro n
como entrada e
- divida
s
em pedaços de comprimenton
ses
vier primeiro. O último elemento será mais curto, se necessário. - separe
s
emn
pedaços de igual comprimento sen
vier primeiro. Selen(s)
não for um múltiplo dosn
primeiroslen(s) mod n
elementos, será um mais longo.
Você pode pegar apenas essas 2 entradas. s
nunca conterá apenas dígitos.
Notas
- Você pode usar o mapeamento reverso. Observe isso na sua resposta se você fizer isso.
s
conterá apenas caracteres ASCII imprimíveis (sem novas linhas).- Você não pode usar nenhum componente interno que resolva essas duas tarefas diretamente. Todos os outros builtins são permitidos.
- Você precisa usar os dois argumentos da mesma fonte.
- Você pode levar os argumentos em uma lista ordenada ou em qualquer outro formato que indique claramente a ordem deles, desde que não seja ambígua.
- Você pode pegar a entrada como uma sequência / fluxo e usar um caractere que não é válido (como um nulo) para separá-los.
n
sempre será igual ou menor que o comprimentos
e maior que zero.- Você pode produzir a lista resultante em qualquer formato razoável, desde que indique claramente as partes específicas e sua ordem.
Exemplo
Entrada: programming, 3
O último elemento contém apenas 2 caracteres, porque 11 não é divisível por 3.
Saída: ["pro", "gra", "mmi", "ng"]
A entrada: 3, programming
11 não é um múltiplo de 3; portanto, os 2 primeiros elementos serão um mais longo:
Saída: ["prog", "ramm", "ing"]
Regras
- Função ou programa completo permitido.
- Regras padrão para entrada / saída.
- Aplicam-se brechas padrão .
- Isso é código-golfe , e a menor contagem de bytes vence. O desempatador é uma inscrição anterior.
Casos de teste
Os casos de teste foram gerados com este programa Pyth (usa builtins, portanto, nenhuma resposta válida). Obrigado a @FryAmTheEggman por fornecer a versão base disso!
3, helloworld -> ['inferno', 'owo', 'rld'] helloworld, 3 -> ['hel', 'low', 'orl', 'd'] 1, programação -> ['programação'] programação, 1 -> ['p', 'r', 'o', 'g', 'r', 'a', 'm', 'm', 'i', 'n', 'g'] 8, programação -> ['pr', 'og', 'ra', 'm', 'm', 'i', 'n', 'g'] programação, 8 -> ['programm', 'ing'] 9, código golf -> ['c', 'o', 'd', 'e', '', 'g', 'o', 'l', 'f'] código de golfe, 9 -> ['código de golfe'] 4, 133tspeak -> ['133', 'ts', 'pe', 'ak'] 133tspeak, 4 -> ['133t', 'speak', 'k']
Feliz codificação!
Respostas:
MATL,
462621272942 bytesExperimente Online! (Atualizado ligeiramente para funcionar com a versão mais recente do idioma)
Explicação
fonte
e
um builtin proibido?XUZN?...
porU?...
e trocar os doisif
ramos. Além disso, você não precisa do3$
e
não resolve diretamente o problema, por isso não considero proibido, não.JavaScript (ES6), 132 bytes
Provavelmente isso é irremediavelmente superprojetado.
fonte
JavaScript (Firefox),
8887 bytesChame-o como
(...)("programming")(3)
usar o Firefox 30+.fonte
Ruby, 119 bytes
E eu tomo o primeiro lugar por 2 bytes ...
fonte
x.scan(/.{,#{y}})
funciona bem para dividir as strings no primeiro caso. Ou isso conta como um embutido?AWK,
121130128122 122 bytesO único problema é se a primeira entrada é uma sequência que começa com um valor numérico. Isso causaria
AWK
ver a string como esse número e a segunda entrada como a string.OK ... corrigiu o problema numérico, mas adicionou 9 bytes :(.
Retrabalhado um pouco para salvar alguns bytes.
Quase de volta ao comprimento original. :)
fonte
Haskell, 131 bytes
Exemplo de uso:
Como funciona: o trabalho principal é realizado pela função auxiliar,
q
que recebe um par de números(d,m)
e uma strings
. Primeiro, ele cria uma lista dem
tempos,d+1
seguida por muitos infinitosd
(por exemplo,(1,3)
->[2,2,2,1,1,1,1,1,...]
). Em seguida, ele ésplitPlaces
divididos
em pedaços de tamanhos fornecidos pela lista.splitPlaces
para ses
ficar sem elementos, então uma lista infinita é boa.A função principal
#
verifica qual parâmetro é o númeron
/ stringstr
e chamaq
com um(div (length str) n, mod (length str) n)
ou(n, 0)
maisstr
.fonte
C # (LINQPAD) - 335 bytes
A parte de leitura de entrada ocupou um pouco de espaço. Vencedor da resposta mais longa.
Uso # 1:
Uso # 2:
fonte
Pitão, 181 bytes
Vamos fingir que o código mais longo em bytes ganha \ o /
Experimente aqui! (O intérprete online parece ter um erro, exibe a entrada enquanto não deveria)
Aqui está a saída do terminal:
Sério, estou aberto a uma nova abordagem. Eu sou novo em python, então provavelmente perdi alguns atalhos.
Quero dizer, acho que minha resposta é desesperadora, pois é mais longa que a resposta em javascript ...
fonte
testcases
. Os casos de teste são gerados pelo Pyth. A solução é.xcsJKcJsK
, ondeJ
eK
são os dois argumentos.PHP, 114 bytes
(Substitua
+@$p
poris_numeric($p)
para corrigir.)(Insira
~
para ASCII imprimível,a&
para qualquer ASCII antes$t;
de corrigir.)-nr
ou experimente online .fonte
PowerShell ,
122118 bytesExperimente online!
Menos golfe:
fonte