A tarefa
Crie uma função / sub-rotina que retorne 1. Você pode torná-la tão elaborada quanto desejar, desde que retorne 1.
As regras
A entrada com mais vitórias positivas - como qualquer concurso de popularidade. Boa sorte!
:)
A tarefa
Crie uma função / sub-rotina que retorne 1. Você pode torná-la tão elaborada quanto desejar, desde que retorne 1.
As regras
A entrada com mais vitórias positivas - como qualquer concurso de popularidade. Boa sorte!
:)
Respostas:
Script de golfe
1
Demorou muito tempo para otimizar esse código da forma mais pura e, ouso dizer, uma forma bonita. Essa elegância da língua não vem sem anos de prática dedicada. O programa que, sem um Zero-Instruction-Set-Computer, literalmente nunca mais poderá ser compactado. Toda a minha carreira no código de golfe está levando a esse momento.
Eu estou livre. Eu estou vivo.
Eu vejo o código subjacente ao universo.
without a Zero-Instruction-Set-Computer can literally never be compressed any further
. Nossos computadores atuais podem lidar facilmente com programas com 0 instruções. Tudo que você precisa de uma linguagem que tem: "O programa retorna vazios 1" na sua especificação
Dois exemplos, usando recursos de linguagem obscura, como "retorno forte" ( return!
) e o operador "abordagens" ( -->
):
int foo(void) {
return! 0;
}
int bar(void) {
int i=7;
while (i --> 0);
return-i;
}
return-i
palavra-chave especial : P
+++++++
+++++++
+++
+++
+++
+++
+++
++++++++++
++++++++++.
Ou se você não gosta de festas:
+++++++[->+++++++<]>.
l
que uma 1
.
one ← {⍴⍴⍴⍵}
⍴
fornece as dimensões de um vetor. A dimensão disso é sempre unidimensional; portanto, a dimensão disso é sempre unidimensional . Ou:
"Rho, rho, rho de X
sempre é igual a um,
Rho é dimensão; rho rho, classificação
APL é divertido!"
(Eu não escrevi esse verso, é de Stallman.)
# @: # @: #
(espaços são opcionais)
public static int funWithOne() {
try {
try {
return funWithOne();
} finally {
return funWithOne();
}
} catch (Throwable _) {
return 1;
}
}
Isso se chamará 2 1024 vezes (esse número pode variar em diferentes plataformas) antes de finalmente retornar 1
. Não prenda a respiração, no entanto; facilmente levará muito mais tempo do que a idade do universo.
Peixe
x envia o contador de programa em uma direção aleatória. # é uma parede na qual o contador de programas "salta". Isso irá literalmente vagar sem rumo até encontrar o "^" e depois imprimir 1 e terminar.
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxx###xxxxxxxxxxxxxx
xxxxxxxxxx#;#xxxxxxxxxxxxxx
xxxxxxxxxx#n#xxxxxxxxxxxxxx
xxxxxxxxxx#1#xxxxxxxxxxxxxx
xxxxxxxxxx#^#xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
x
para um ?
, todo #
para um r
, n
para dentro .
e ;
para dentro @
. No entanto, esse programa> <> parece melhor que o Befunge equivalente. Tradução mostrada aqui: ideone.com/ZyuSKk
?
para a x
e todos #
para a !
(deve funcionar bem quando deixado o mesmo também) e (é claro) .
para n
e @
para ;
. ideone.com/gfApjT
expr 0
Isso imprime 0, mas retorna 1, o que pode surpreender os programadores acostumados a outros idiomas. Você pode desligar a saída impressa e ver o código de retorno executando expr 0 >/dev/null; echo $?
.
$(pidof progname) < 1
Essa é uma das minhas perguntas específicas sobre Java preferidas.
public static int ret1() {
try {
return 0;
} finally {
return 1;
}
}
try
bloco dispara instantaneamente, finally
retornando 1 antes que a outra return
instrução possa ser executada.
function getOne() {
return -~![];
}
Explicação:
![]
avalia como false
.~false
se torna -1
porque false
é primeiro convertido em 0
, e ~0 == -1
.--1
avalia como 1
.Alternar:
return +!([][~~{}])
Alternativa maluca (cada linha tem exatamente 80 caracteres):
this[693741..toString(36)]('acnuftiao nobcbdaterbaurn +abeba!!be'.replace(/b./g,
function(b){return '{}()'.split('')['aecd'.split('').indexOf(b.charAt(1))]})[''+
'replace'](new RegExp('a'+Array(5).join('(.)'),'g'),(a='$')+'4321'.split([]+[]).
join(a)))
// we all know that OOP == good
function OneManager() {
// constants == good too
this.values = {
ERROR: -1, // value on error
ONE: 1 // desired value
}
this.value = this.values.ERROR // set the value to ERROR
this.setValue = function(num) {
if (typeof num !== "number") throw new Error('cannot set value to non-number')
if (!this.value) this.value = this.values.ERROR // oh noes
else this.value = num
}
}
// initialize the one
OneManager.prototype.initializeOne = function() {
this.setValue(this.values.ONE) // set the value to ONE
return true // return true for success
}
// get the value
OneManager.prototype.getValue = function() {
if (this.value == this.values.ERROR) { // if the value is ERROR
throw new Error('value not initialized')
} else return this.value // return the value
}
function getOne() {
var m = new OneManager() // make a OneManager
var success = m.initializeOne() // initialize the value
if (success) return m.getValue() // return the value
else {
// there was an error in the initialization
var retVal = m.values.ERROR // we will return an error
delete m // maybe it's corrupted
return retVal // return an error
}
}
alert(getOne())
OO == good
ou OO === good
?
data One = One deriving (Eq, Ord, Bounded, Enum, Show, Read)
Isso define aquele verdade One
. Isto One
é tanto o tipo denotando Oneness , e o construtor One
, o que em si é a função nullary que retorna a um verdadeiro, e somente um valor do tipo One
, que é eis One
.
Uso no ghci
REPL:
λ: One -- One returns the one true One
One
λ: One == One -- One is equal to itself, as no others are
True
λ: One < One -- One is no less than itself
False
λ: minBound :: One -- One is the least One there is, yet it is all you need
One
λ: maxBound :: One -- One is as big as the universe of One, it is omnipotent
One
λ: [ One .. One ] -- One is the beginning, and ending, of all that is One
[One]
λ: show One -- The textual gospel of One
"One"
λ: read "One" :: One -- To read the word of One, is to become one with One
One
O cheio Book of One já está online. Ao carregar, você obtém os dois testamentos: Computação e Aritmética. Isso permite que você explore mais verdades:
λ: One + One -- One can only add to its magnificence
One
λ: negate One
*** Exception: One cannot be negated, mortal fool!
λ: One `div` One -- One is indivisible
One
λ: One `mod` One
*** Exception: Nothing can modulate the power of One
λ: toRational One -- Ye shall know One as both Numerator and Denominator
1 % 1
λ: toInteger One * 42 -- One multiplies all to wholeness
42
λ: toRational One / 2 -- Even divided, One is on top
1 % 2
sub ret1 { print $->$= }
(Apesar das aparências, a função não imprime nada.)
Eu sei que programadores Perl gostam de dizer TMTOWTDI, mas essa é uma tarefa para a qual realmente MTOWTDI.
float one(void)
{
const int n = 24; // magic number
float x = 0.5f;
float y = x;
int i;
for (i = 0; i < n; ++i)
{
x *= 0.5f;
y += x;
}
return y;
}
Você não disse que tinha que ser um número inteiro 1.
float one_F(){
return FloatFactoryFactory.getInstance(FloatFactoryFactory.
defaultInstanceDescriptionString).getFactory(Locale.getLocale
("en-US")).createBuilder().setString("1.0").getResult();
}
Fonte: http://bash.org/?946461
function one() { return Number.length; }
Hora de um pornô especial.
A Seção 15.7.3 afirma que a length
propriedade do Number
construtor é 1
(e sabemos que um construtor é um objeto de função, como mencionado em 4.3.4 ), e isso ocorre porque a seção 15.3.5.1 diz:
O valor da propriedade length é um número inteiro que indica o número "típico" de argumentos esperados pela função. No entanto, a linguagem permite que a função seja chamada com algum outro número de argumentos.
... e uma vez que o Number
número típico de construtor de argumentos é 1, o length
de Number
é 1
. Então, pode-se dizer que o comprimento de um número em Javascript é 1.
sub one{ $a[@a{@a[%a=map{@$a[@a{$a++=>$a}]+++$#$a+$a=>$a}$a]++}+$a] }
Abra bem e diga aaaaa
.
O conceito criativo foi para os aparelhos ninho dentro suportes dentro chaves ... tão profundamente quanto possível, enquanto ainda devolvendo o resultado desejado, e usando apenas um "um" variável ( $a
, @a
, %a
, @$a
e$#$a
são, naturalmente, todas as variáveis diferentes).
Embora isso modifique seu ambiente significativamente, ele sempre retornará 1
nas chamadas subseqüentes. Para entender o que está fazendo, considere executar este código:
use Data::Dump qw(dump);
for (1..8) {
one();
dump(@a);
dump(%a);
dump(@$a);
}
proc return1 {} {
catch {(5+2-3)/4}
}
Não funciona como você imagina.
(5+2-3)/4
não é um comando válido, portanto, gera um erro ( return -code 1
), catch retorna esse número.
public class print {
public static char getNum() throws Exception{
String method = print.class.getSimpleName()+Splitter.class.getDeclaredMethods().length;
return (char)Splitter.class.getMethod(method).invoke(null);
}
}
class Splitter{
public static char print1(){
return P.getNum();
}
}
class P{
public static char getNum(){
String s = Thread.currentThread().getStackTrace()[P.class.getDeclaredMethods().length].getMethodName();
return s.charAt(s.length()-P.class.getSimpleName().length());
}
public void doNothing(){}
}
Pode ser ajustado para devolver qualquer outro número positivo n
adicionando os métodos printX
para X
de 1 a N em divisor. Por exemplo, modificando Splitter
para
class Splitter{
public static char print1(){
return P.getNum();
}
public static char print2(){
return P.getNum();
}
}
Retornará '2', sem nenhuma outra alteração necessária. Os métodos adicionados devem, além do nome, ser uma duplicata exata de print1
. Usa reflexão para obter o número de métodos no divisor e chama uma função com esse nome.P.getNum
, que é então chamado, lê o rastreamento da pilha e analisa o último caractere no método de chamada e o exibe.
A chamada print.getNum()
retorna o caractere '1'
Editar - modificado para não usar literais String / número inteiro / etc.
C #
Deve depender da arquitetura do hardware:
return IntPtr.Size / (Environment.Is64BitOperatingSystem ? 8 : 4);
UAU!
Mesclando este (controverso) com a vizinha (controversa) Collatz Conjecture :
public int CollatzOne()
{
var current = new BigInteger(new Random().Next(1, Int32.MaxValue));
var history = new[] { new BigInteger(-1), new BigInteger(-1), new BigInteger(-1) };
do
{
history[0] = history[1];
history[1] = history[2];
history[2] = current;
if (current.IsEven)
current /= 2;
else
current = current * 3 + 1;
} while (current != history[0]);
return (int)history.Min();
}
Abusando do RNG ...
Random.new(56417).rand(10000)
Gera um número "aleatório" entre 0 e 10000, e porque eu escolhi a semente certa, por acaso é 1.;)
Script que usei para encontrar o número:
irb(main):001:0> (1..100000).select{|x|Random.new(x).rand(10000) == 1}
=> [14033, 25845, 35101, 36955, 45334, 56417, 87438, 87460, 99178, 99451]
isso é simples o suficiente?
(+!~~{})
Um clássico:
TRUE + 0
+
tenta coagir seu argumento a um tipo comum: aqui, por causa da ordem de precedência, ele força a números inteiros. A coerção de TRUE
para um número inteiro dá 1.
+TRUE
não funciona?
+TRUE
passa a dar TRUE
.
FALSE + 1
, estou correto?
Inclusive inclui documentação sobre seus parâmetros.
int
return_1
(x) int
x;{
/*x
can
be:
any
val
ue.
***/ return
!x?1:x /x;}
one = lambda zero = 0o11: zero > 1 and all(one(zero-1) for l in '1111111111') and 1 or one and zero or one()
one()
se chamará 111.111.111 vezes, retornando sempre 1, antes de retornar o valor final 1.
Você também pode especificar o número de dígitos. Por exemplo,one(3)
retornará 1 apenas 111 vezes.
Posso acrescentar uma explicação mais tarde, mas realmente não tenho tempo no momento.
NA ^ 0
Qualquer número ao poder de 0
é 1
.