The Puzzle
Você deve escrever um programa ou função p (n) que retorne o quadrado do que é inserido nele e você pode assumir que a entrada é um número inteiro não negativo. Em termos mais simples, retorne n 2 .
Regras
- Você não tem permissão para usar
*
ou/
(ou qualquer outro operador de raiz quadrada ou de energia, comoPOW
ouSQRT
, se o seu idioma contiver essas funções) - Você não pode usar um loop ou usar construções semelhantes a um loop. Exemplo de construções tipo loop
GOTO
e recursão.
Exemplo
Function p(n)
Dim r()
ReDim r(n)
p = Len(Join(r, Space(n)))
End Function
Seja criativo e (ab) use as funções e os recursos fornecidos pelo idioma de sua escolha.
*editar
Estruturas tipo loop são loops que permitem repetir 1 ou mais instruções
-se você poderia adicionar um stdout "1"
ao seu código e acabar repetindo essa saída n vezes, ele contará como um loop
m*n
vez den*n
sem usar o*
. Veja codegolf.stackexchange.com/a/18283/14485Respostas:
CJam, coloca os óculos
Entrada via STDIN
Experimente o código aqui
Observe que
*
no código não é usado como multiplicador, mas como um operador de junçãoObserve também que a parte legal do código não é apenas string, metade é o código envolvido na localização do quadrado. Então .. lide com isso
Isso o ajudará a lidar com isso:
fonte
Rubi
fonte
FromDigits[{1, 0, 0}, Input[]]
. O mesmo em CJam:4Ybl~b
APL? ∊⍵⍵
Esta resposta é dedicada a todas as pessoas que usam "∊⍵⍵" sempre que veem os símbolos da APL :-)
Exemplos
Explicação
fonte
+/
em outras línguas é chamadosum()
e vejo muitas respostas usando-o. Pelo mesmo raciocínio que você não pode usar*
no CJam.Abusando de algumas funções no Mathematica
Duas vezes a área de um triângulo retângulo isósceles
A área de um quadrado. Claro!
A mesma ideia, de uma forma diferente:
O número de elementos em uma matriz quadrada:
ou
ou
ou
etc ...
fonte
k[n_] := Integrate[n, {x, 0, n}]
:?Integrate
muito bom, mas itera, o que acredito ser uma forma de loop.Area
e amigos são multiplicação implícita (mas também permitido)C
Nota:
int
é usado para reduzir a contagem de caracteres e para pontos de estilo.fonte
Mathematica
Outra resposta usando alguns recursos engraçados do Mathematica
Um gráfico completo com
n
vértices possuibinom(n,2) = n(n-1)/2
arestas (que também é o enésimo número triangular). Portanto, o resultado é simplesmente o dobro disso, mais a entrada.fonte
Python 2
Puramente matemático, evitando qualquer uma das operações proibidas:
Este é o
exp(ln(x)*y)
truque usual adaptado para esse problema:ln(x)+ln(x)
para nos livrar da multiplicação.math.exp()
estava um pouco perto do "prisioneiro de guerra" banido para jogar limpo, então tudo se converte em complexo e a identidade de Euler é usada para substituir oexp()
porcos()
esin()
i
é necessária multiplicação / divisão explícita por , acomplex()
função é usada.fonte
math.log
paracmath.log
que você pode lidar com números negativos. Você também não precisaimport math
então.input
não faz o que você pensa no Python 2 e no Python 3print
é uma função em vez de uma instrução.input
faz no Python 2? ;-). Certamente eu escreveria isso de maneira diferente se fosse um código de produção, mas, para os propósitos desse desafio, está ótimo, desde que a entrada seja uma expressão numérica bem formada. Eu entendo que há uma avaliação implícita lá e seu potencial mal.Pure Bash
Sem loops explícitos ou aritméticos:
Usa expansões de bash para criar duas listas 1-n e expandir-chaves entre elas e exibir o tamanho da matriz resultante.
Método semelhante, mas usando coreutils:
fonte
R, deliciosa ineficiência com Monte Carlo
A expectativa
E[x]
para a parametrização de forma / escala da Distribuição Gama éshape*scale
.Não vejo
mean
sendo banido, então aqui está a solução de exemplo commean()
Sem usar
mean()
, é possível usarmode[x]
, o que é igual a(shape-1)*scale
, mas isso envolve escrever umaadd.one
função para ignorar+1
e escrever outraMode
função para tabular o modo.Precisão não garantida, mas leis de grande número devem valer 1.000.000.000 de amostras, o que me deu os resultados corretos para todos os meus casos de teste.
fonte
Java
Primeira entrada, é assim que funciona?
fonte
C #
Cria uma sequência com n caracteres e substitui cada caractere pela sequência de n caracteres. Isso produz uma string com um comprimento de n * n.
Teste aqui: http://ideone.com/lubIFg .
fonte
Matlab
um aviso: isso é baseado principalmente em matemática, portanto, não espere código-fonte sofisticado
Note que
a = n^2
ifflog(a) = log(n)*2
ifflog(log(a)) = log(log(n))+log(2)
. Portanto, esta função está apenas encontrando o zero da funçãof(a) = log(log(n))+log(2) - log(log(a))
que obviamente estáa = n^2
.Aqui estão algumas outras funções não muito criativas:
Aqui, o programa somará o número
1+2+3+...+n = 1/2 * (n^2+n)
duas vezes e subtrairán
, para que o resultado seja sempren^2
Essa função cria uma
n x n
matriz de números aleatórios (entre 0 e 1) e, em seguida, retorna o número de elementos.A função a seguir cria uma matriz de vandermonde do vetor
(0,0,n)
e gera a entrada que consiste emn^2
Essa função cria o inverso de uma matriz hilbert de tamanho em
n
que o elemento superior esquerdo é sempren^2
fonte
g=@(n)nnz(nan(n));
em prol da eficiência e da brevidade. ;-)function s = g(n); a = inv(hilb(n)); s = a(1); end
. Mas, novamente, sua solução é mais curta; PC
Funciona até INT_MAX em tempo constante e sem alocação de memória.
Exemplo:
exibe
fonte
Java
Esta é a primeira resposta que realmente não usa loops ou recursão.
fonte
System.out.print(1)
am
, o programa imprimiria1
exatamente 32 vezes, não n vezes.GolfScript
O Histocrat mostrou uma maneira de usar a conversão de base: aqui está outra.
Dissecação
fonte
Emacs Lisp
A macro simples que se expande
(square-it 5)
em(+ 5 5 5 5 5)
. Obviamente, a entrada deve ser uma constante de tempo de compilação.fonte
Javascript
fonte
Haskell
Existem muitas possibilidades se intervalos
[x..y]
forem permitidos, alguns deles são:Os dois últimos usam a instância de listas do Monad. para listas
xs
,ys
retenções quexs>>ys
sãoys
anexadas a si mesmaslength xs
vezes.outro truque é apenas
esta função, quando recebe um argumento 'apropriado' (que é claro da classe
Num
) retorna seu quadrado.Product 3 :: Num a => Product a
é um exemplo de tal argumento.basicamente, essa função quando aplicada em
Product a
(que naNum
classe sea
está em i)mappend
é ela mesma e retornaProduct (a*a)
.se formos mais rigorosos sobre o que é um número / em que números nossa função deve funcionar, podemos definir
f
comofonte
Java
Isso é muito longo para responder, mas basicamente uma das linhas de código ocorre uma quantidade de vezes aproximadamente igual ao sqrt de
Integer.MAX_VALUE
(que é 46340). : DSem comentários ou quebras de linha, o código digitado seria 1.112.155 caracteres.
fonte
R
Esta função é baseada na contagem de todas as combinações possíveis de duas seqüências que variam de 1 a
n
. O valor 0 é tratado separadamente.fonte
Clojure
Sequência infinita de todos os quadrados a partir de 0. A função:
fonte
J
Alguma arte ascii ...
fonte
perl:
fonte
SQL (PostGIS)
Fazendo uso da área e criar funções de envelope na extensão PostGIS para PostGreSQL para criar uma geometria quadrada e retornar sua área. Também pode ser alterado para retornar o quadrado de carros alegóricos.
Em uso;
fonte
Pitão
Usa matemática simples. Com base na soma de uma progressão aritmética.
Explicação:
Embora sum e range provavelmente contenham loops implícitos,
mas de acordo com as especificações da pergunta, não há como inserir uma declaração de impressão aqui para repetir, então ... :)
fonte
Bater
Só funciona se n <256.
fonte
PHP
trabalha com número inteiro no intervalo [0; 46340]
Edit: Acabei de ver o código @thebestone e é basicamente o mesmo
fonte
Perl
o programa espera que o número de entrada seja quadrado de forma unária (ou seja, base 1). A saída também é unária. Simplesmente substitui todos os dígitos pelo número inteiro.
Exemplo de uso:
fonte
Scala:
fonte
Scala:
fonte