Eu preciso parar de pensar em nomes punny
Sua tarefa é criar o maior número possível de trechos (programas com entrada e saída integradas), funções ou programas completos que classifiquem a versão do seu idioma de matrizes inteiras em ordem crescente, mas para cada programa, você só tem permissão para usar os caracteres em ASCII (ou a página de código do seu idioma, se for diretamente especificado como não ASCII), que não foram usados nos programas anteriores.
Este é um exemplo de resposta (programas separados por novas linhas):
Derp
ASdFGHJKLAAA
qwEEERtyRty
Neste (linguagem ficcional), minha primeira resposta é Derp
, que utilizou-se D
, e
, r
e p
. No segundo programa, não tenho permissão para usar esses caracteres novamente, mas posso reutilizar quantos caracteres desejar. O mesmo com o terceiro programa, e assim por diante.
Cada programa deve ter uma matriz de números inteiros, então algo assim (consulte exemplos de entrada / saída para estilos válidos de entrada / saída):
[3 4 -2 5 7 196 -44 -2]
E deve gerar os itens na matriz como uma matriz, em ordem crescente:
[-44 -2 -2 3 4 5 7 196]
Sua pontuação será o total de envios. Se houver um empate, o menor número de bytes (menor quantidade de bytes no seu código) vence!
Regras para programas:
- Todos os envios devem ser executados corretamente em uma versão do idioma
Python 2 != Python 3
. - Seus envios podem ser trechos, funções ou programas completos. Você ainda pode misturá-los e combiná-los - no entanto, você deve dizer qual é qual e fornecer links para envios de trabalho.
- Forneça links on-line para todas as soluções, se possível.
- Todos os envios devem usar uma matriz (ou uma string delimitada com qualquer caractere) como entrada e produzir a matriz classificada (no formato de matriz do seu idioma ou como uma
{any character}
string delimitada. - Você não tem permissão para usar caracteres fora do ASCII (ou na página de códigos do seu idioma).
Por exemplo, estas são entradas / saídas válidas:
[1 2 3 4] (Clojure style arrays)
[1, 2, 3, 4] (Python style arrays)
1 2 3 4 5 (Space-delimited - separated by spaces)
1#2#3#4#5 ("#"-delimited - separated by "#" characters)
1\n2\n3\n4\n (newline-delimited)
Especificações para entrada:
- Você está garantido que a matriz contém apenas números inteiros. No entanto, pode haver números negativos, e os números podem se repetir indefinidamente.
fonte
Respostas:
Geléia , 10 programas, 65 bytes
Existe alguma sobreposição inevitável com a resposta do @ Lynn Jelly . Créditos para a idéia do bogosort vão para ela.
Experimente online! ou verifique a exclusividade .
Como eles trabalham
fonte
Geléia, 8 programas
O último programa é realmente irritante…
Se eu puder remover a
œṡ
partir de<;0œṡ0⁸ṁjµ/
, há também um presente estranho:²SNr²ZFœ&
. A ajuda é apreciada.fonte
Roots → polynomial, polynomial → roots
é gênio!U
é livre05AB1E , pontuação = 6
05AB1E usa a codificação CP-1252 .
Agradecimentos a Kevin Cruijssen pelo programa 4.
Agradecemos a Riley pela inspiração no programa 6.
Programa 1
Experimente online!
Programa 2
Experimente online!
Programa 3
Experimente online!
Programa 4
Experimente online!
Programa 5
Experimente online!
Programa 6
Experimente online!
fonte
ϧ
Pode ser usado para uma pontuação adicional. Experimente aqui.œ
solução, mas eu nem sequer saber sobreß
:)€Ý逤
funcionaria se¤
exibisse o valor em vez de apenas obtê-lo.Brachylog , score =
45Programa 1 - Classificação aleatória
Nós embaralhamos e verificamos que o reverso da lista não aumenta. Caso contrário, tentamos novamente recursivamente.
Programa 2 - Classificação da permutação
Emita a primeira permutação que não diminui.
Programa 3 - Integrado
Ordem.
Programa 4 - Integrado
Encomende por etiqueta. Como os números inteiros na lista já estão corrigidos, isso faz o mesmo que
o
.Programa 5 - Impressão mínima
Aqui está uma explicação para essa monstruosidade da natureza:
fonte
RecursionError: maximum call stack size exceeded
JavaScript, pontuação
12Dobrou a pontuação graças a @ETHproductions que me lembrou de escapes de cordas
Snippet 1 (21 bytes, caracteres
\ ,-.=>289`Facehilnorstux
)Snippet 2 (9117 bytes, caracteres
(+)[!]
)Você pode testar as duas versões no console do seu navegador. A primeira versão é apenas uma função, a segunda versão é um trecho que precisa dos parênteses e argumentos adicionados.
Exemplos
Quão?
O primeiro trecho chama o método de classificação na matriz que você passa. Por padrão, o método de classificação classifica lexicográficos, o que é ruim para números inteiros (especialmente números negativos de vários dígitos). Como tal, temos que passar um retorno de chamada na forma de uma função de seta que pega dois elementos e subtrai o último do primeiro. Dependendo do valor resultante, os dois elementos são reorganizados: se for menor que 0,
a
aparecerá antesb
, se for maior que 0,a
aparecerá apósb
e se for 0, os dois elementos terminarão próximos um do outro.O segundo trecho nada mais é do que uma versão codificada do primeiro trecho e tira vantagem do fato de que no JavaScript
object.function()
é igualobject["function"]()
. Ele também usa matrizes vazias,!
operadores e conversão de números para gerar todos os tipos de strings, nos quais os caracteres necessários para o nome da função podem ser encontrados. Em seguida, os colchetes são usados mais uma vez para obter o caractere em um determinado índice na sequência e todos esses caracteres são concatenados, resultando no seguinte código JavaScript:[]["fill"]
igual a[].fill
, cujo["constructor"]
é oFunction
objeto. Em seguida, chamamos isso com uma string (que deve ser avaliada quando a função é chamada), que é a primeira função, mas observe que o argumento foi substituído porthis
. Para definir o valor dethis
para o argumento, precisamos chamar uma função nessa função, a saber["call"]
. No JavaScript convencional, você escreveria isso como:fonte
Function`return a=>a.sort\x28\x28a,b\x29=>a-b\x29`
por exemplo, mas sem usar os caracteres que você já usou'
e executando, por exemplo, em'('
vez do JSF que gera esse caractere. (também, usef
et
como vars em vez dea
eb
,b
literalmente , custa cerca de 3000 caracteres)V , pontuação
3, 4Este foi um desafio muito divertido! Felizmente, o vim possui uma função de "classificação" integrada, caso contrário, isso seria basicamente impossível. Infelizmente, como o V / vim é baseado em string, ele precisa de um argumento para classificar por valores numéricos. Então eu estou ligando
Classifique por valor numérico
n
,Classifique por valor hexadecimal
x
eClassificar por valor de ponto flutuante
f
Pequena observação: quando escrevo algo como
<esc>
ou<C-r>
, esse é realmente um byte. Representa caracteres não imprimíveis e, como infelizmente o V depende muito de caracteres não imprimíveis, esse método facilita tudo. Os links TIO têm o-v
sinalizador, o que faz com que o intérprete V os leia como se fossem os caracteres que representam.Programa 1, 2 bytes
Experimente online!
Isso chama o tipo específico de V função de
Programa 2, 10 bytes
Isso apenas chama 'ordenar' diretamente. A única coisa interessante sobre isso é que fazemos do
ex
modo mode, que é um modo estranho que emula o editor de texto 'ex', o trisavô de V.vi
é um atalho paravisual
, o comando usado para sair do modo ex. Isso requer uma nova linha à direita.Experimente online!
Programa 3, 14 bytes
Experimente online!
Tudo bem, aqui é onde as explicações começam a ficar um pouco estranhas. Se podemos construir o texto
sor x
, podemos excluí-lo e inseri-lo no comando atual com<C-r><register-name>
. Então, entraremos em maiúsculas.Programa 4, 19 bytes
Experimente online!
E aqui é onde as explicações começam a ficar muito estranhas. Semelhante à última vez, criaremos o comando no modo normal para que possamos usar chaves diferentes.
fonte
CJam, pontuação 4
Programa 1: Integrado
Programa 2: Avaliação Interna
36 é o valor ASCII de
$
.Programa 3: Classificação de Permutação
Programa 4: Valores Mínimos
Explicação dessa monstruosidade sobrenatural:
fonte
(+
vez de,1m<
se quiser.<
nesse trecho por isso é provavelmente melhor ficar com1m<
Japt , pontuação = 4
Programa 1
Experimente online!
Programa 2
Experimente online!
Programa 3
Experimente online!
Programa 4
Experimente online!
fonte
s)$.sort(...
, não tenho certeza se isso é útil.O
e$
têm sido utilizados. Estou aberto a sugestões, se você puder pensar em outras maneiras de classificar! :)Oitava, 2 pontos
É difícil competir com esolangs, mas aqui vai:
Estou impressionado se alguém vencer isso.
unique
pode ser usado para classificar valores, mas eliminará as duplicatas. Para inserir as duplicatas, você precisará de parênteses e eles são muito usados na classificação de bolhas. Você também precisaria@
, o que também é usado.Número 1:
Essa é bem simples: Crie uma função anônima, atribuída à variável
ans
.Chamá-lo desta forma:
ans([-5, 3, 0, -2, 100])
. Ele não funciona no tio, mas funciona na oitava on-line .Número 2:
Isso é simplesmente uma implementação de classificação de bolha, sem usar os caracteres
@sort
. Não podemos fazer disso uma função, por causa deo
, e não podemos usarinput
por causa dot
. Portanto, estamos presoseval
.eval(['a=inpu',116,'("");']);
avalia como:,a=input("");
que podemos usar para inserir nosso vetor de entrada. O resto é uma classificação de bolhas sem usarfor
oumod
. Observe que isso deve ser salvo em um script e chamado a partir da GUI / CLI. Você não pode copiá-lo e colá-lo devido ainput("")
(ele usará o restante do código como entrada, portanto falhará miseravelmente).fonte
Haskell (lambdabot), 3 funções
Estou usando o ambiente lambdabot para evitar muitas
import
instruções. Atésort
precisaimport Data.List
. O lambdabot importa vários módulos por padrão. Além dos desaparecidosimports
, é o código Haskell padrão de acordo com nossas regras.Experimente online! .
Função 1
A função de biblioteca de
Data.List
. Não há muito o que dizer aqui.Função 2
A função
v
implementa uma ordenação por inserção.Eu uso protetores de padrão para evitar
()
parâmetros. Comparevv v|vvv:vvvv<-v=...
comvv(vvv:vvvv)=...
.A primeira linha, function
vv
é uma função auxiliar para criar a lista vazia. Com ele, não preciso[]
escrever listas literais vazias. Mais legível:(==:)
é insert, que insere um elemento em uma lista classificada, para que a lista resultante ainda seja classificada. Mais legível:(=:)
é reduzir. Mais legível:E, finalmente, o
v
que reduz a lista de entrada com[]
:Função 3
sort
Função de uma toma a maioria das funções lista-de passeio (fold
,scan
,until
) indisponíveis. Necessidades de recursão=
usadas na Função 2. A única opção que resta é usar o combinador de ponto de fixaçãofix
. Eu comecei comque é um tipo de seleção. Ativá-lo sem pontos (eu não posso usar lambdas
\f x ->...
, por causa do-
que é usado pelos gurads padrão na Função 2) fornece:Fazer listas singleton com um valor com
return
é proibido (o mesmo parapure
), então eu tenho que criar minha própria função:\x -> map (\y -> x+0*y) [1]
ou sem pontoflip map[1].(.(0*)).(+)
. Substituindoreturn
rendimentosfonte
MATL , 3 programas
Programa 1
Isso apenas usa a função interna, com entrada e exibição implícitas.
Experimente no MATL online .
Programa 2
Isso continua gerando permutações aleatórias das entradas até que todas as diferenças consecutivas do resultado sejam não negativas (isso é bogosort , conforme observado por @cz ). O tempo de execução não é determinístico e sua média aumenta muito rapidamente com o tamanho da entrada (ou seja, 𝒪 ( n! ) Para um tamanho- n matriz com todas as entradas diferentes).
Experimente no MATL Online .
Programa 3
Este é um loop que calcula o mínimo da matriz, remove todos os elementos iguais a esse valor e procede com o restante. Isso é feito quantas vezes o tamanho da entrada. Se nem todas as entradas na entrada forem diferentes, algumas das iterações serão inúteis (mas inofensivas), porque a matriz já terá sido esvaziada.
Experimente no MATL online .
fonte
Pip , 4 programas
Programa 1 - incorporado
Snippet; assume a lista em
x
.(
SN
para classificação numérica)Programa 2 - permutações de filtro
Snippet; assume a lista em
y
. Muito lento para entradas com mais de 7 itens.Programa 3 - eval
Snippet; assume a lista em
z
.Programa 4 - MergeSort
Função anônima; chamada com lista como argumento (como
({...} [1 2])
ouf:{...} (f [1 2])
.Ungolfed:
fonte
PowerShell , 2
Experimente online!
Este é um trecho executado (por exemplo) no equivalente do PowerShell a um REPL. O link TIO mostra o uso. O
sort
é um alias para oSort-Object
cmdlet.Experimente online!
Os comandos do PowerShell não diferenciam maiúsculas de minúsculas; portanto, podemos usar
sort
um eSORT
outro. Isso pega uma matriz de entrada, classifica-a no local e depois a gera.fonte
Ruby, 2 programas
Primeiro - o direto:
Segundo - a parte complicada:
fonte
J
Programa um: 3 bytes
como nas
/:~ 3,1,2,1
saídas1 1 2 3
Experimente online!
NOTA em J, números negativos são precedidos por _ not - para que você possa experimentar 4, _10,56, _333 etc.
Programa dois: 5 bytes
fonte
Try it online
coisa links para uma página web na TIO, para ligar uma página em uma resposta que você pode fazer isso:[displayed text](link)
.:
e~
ocorrem em ambos.PHP 7, 2 programas
Ambos os programas podem ser jogados mais.
Programa 1, 254 bytes, caracteres
! "$&+.01:;=>?[]adeginoprtv
Tipo de bolha. Usa
goto
para criar um loop, conforme os loops internos exigem()
.Programa 2, 155 bytes, caracteres
#%'(),-67ACEFINORTUYZ^_{|}~
IF(...){}
evita o uso de;
. O código principal é codificado com o XOR, porque$
já foi usado no programa anterior. O código:fonte