Görev
1 döndüren bir işlev / alt yordam oluşturun. 1 döndürdüğü kadar, istediğiniz kadar ayrıntılı yapabilirsiniz.
Kurallar
En fazla oy alan giriş kazanır - tıpkı herhangi bir popülerlik yarışmasında olduğu gibi. İyi şanslar!
:)
Görev
1 döndüren bir işlev / alt yordam oluşturun. 1 döndürdüğü kadar, istediğiniz kadar ayrıntılı yapabilirsiniz.
Kurallar
En fazla oy alan giriş kazanır - tıpkı herhangi bir popülerlik yarışmasında olduğu gibi. İyi şanslar!
:)
Yanıtlar:
Golf Komut Dosyası
1
Bu kodu en saf hale getirmek uzun zaman aldı ve bunu söylemeye cüret ediyorum - güzel formda. Dilin bu kadar zarafeti, yıllarca süren özel bir uygulama olmadan gelmez. Sıfır-Talimat-Set-Bilgisayar olmadan, kelimenin tam anlamıyla bir daha asla sıkıştırılamaz. Tüm kod golf kariyerim bu ana öncü olmuştur.
Boşum. Hayattayım.
Evrenin altında yatan kodu görüyorum.
without a Zero-Instruction-Set-Computer can literally never be compressed any further
. Mevcut bilgisayarlarımız 0 talimat programını kolayca idare edebilir. Sahip olduğunuz bir dile ihtiyacınız var: "Boş program 1" döndürür
“Güçlü dönüş” ( return!
) ve “yaklaşımlar” operatörü ( -->
) gibi gizli dil özelliklerini kullanan iki örnek :
int foo(void) {
return! 0;
}
int bar(void) {
int i=7;
while (i --> 0);
return-i;
}
return-i
anahtar kelime: P
+++++++
+++++++
+++
+++
+++
+++
+++
++++++++++
++++++++++.
Veya partilerde eğlenmiyorsanız:
+++++++[->+++++++<]>.
l
bir daha 1
.
one ← {⍴⍴⍴⍵}
⍴
size bir vektörün boyutlarını verir. Boyutu böylece boyutu, her zaman tek boyutlu olan bu her zaman biridir. Veya:
“Rho, rho, X'in rho
her zaman birdir,
Rho boyuttur; rho rho,
APL rütbe eğlencelidir!”
(Ben o ayeti yazmadım, bu Stallman's.)
# @: # @: #
(Boşluklar isteğe bağlıdır)
public static int funWithOne() {
try {
try {
return funWithOne();
} finally {
return funWithOne();
}
} catch (Throwable _) {
return 1;
}
}
Sonunda dönmeden önce bu kendini 1024 kez arayacak (bu sayı farklı platformlarda değişebilir) 1
. Yine de nefesini tutma; evrenin yaşından çok daha uzun sürecek .
Balık
x program sayacını rastgele bir yöne gönderir. #, program sayacının "sıçradığı" kapalı bir duvardır. Bu kelimenin tam anlamıyla "^" 'yi bulana kadar amaçsızca dolaşır ve sonra 1'i basar ve bitirir.
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxx###xxxxxxxxxxxxxx
xxxxxxxxxx#;#xxxxxxxxxxxxxx
xxxxxxxxxx#n#xxxxxxxxxxxxxx
xxxxxxxxxx#1#xxxxxxxxxxxxxx
xxxxxxxxxx#^#xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
x
birini bir ?
, her #
içine r
, n
içine .
ve ;
içine değiştirin @
. Ancak, bu> <> programı eşdeğer Befunge'den daha iyi görünüyor. Burada gösterilen çeviri: ideone.com/ZyuSKk
?
bir içine x
ve her #
bir içine !
(çok aynı terk ettiğinde cezası çalışması gerekir) ve (elbette) .
için n
ve @
için ;
. ideone.com/gfApjT
expr 0
Bu, 0 basar ancak 1'i döndürür ; bu, diğer dillere kullanılan programcılara sürpriz olabilir. Yazdırılan çıktıyı kapatabilir ve iade kodunu çalıştırarak görebilirsiniz expr 0 >/dev/null; echo $?
.
$(pidof progname) < 1
Bu benim en sevdiğim Java özel sorumdan biri.
public static int ret1() {
try {
return 0;
} finally {
return 1;
}
}
try
bloğa geri dönmeye çalışmak finally
, diğer return
ifadenin çalışabilmesi için önce 1 değerini döndüren anında ateşlenir .
function getOne() {
return -~![];
}
Açıklama:
![]
değerlendirir false
.~false
olur -1
çünkü false
birinciye döküm edilir 0
ve ~0 == -1
.--1
değerlendirir 1
.Alternatif:
return +!([][~~{}])
Çılgın alternatif (her satır tam 80 karakter uzunluğunda):
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
ya OO === good
?
data One = One deriving (Eq, Ord, Bounded, Enum, Show, Read)
Bu doğru olanı tanımlar One
. Bu One
ifade eden türü hem birliğini ve yapıcı One
bu döner kendisi nullary fonksiyonu olan, bir doğru ve türden yalnızca bir değer One
, Hani olup, One
.
ghci
REPL'de kullanım :
λ: 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
Tam One Kitabı on-line şimdi. Yüklemek size hem vasiyetname kazandırır: Hesaplama hem de Aritmetik. Bu, daha fazla gerçeği keşfetmenizi sağlar:
λ: 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 $->$= }
(Görünüşe rağmen, işlev hiçbir şey yazdırmaz.)
Perl programcılarının TMTOWTDI demek istediklerini biliyorum, ancak bu T'nin gerçekten MTOWTDI olan bir görev .
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;
}
Tamsayı 1 olması gerektiğini söylemedin.
float one_F(){
return FloatFactoryFactory.getInstance(FloatFactoryFactory.
defaultInstanceDescriptionString).getFactory(Locale.getLocale
("en-US")).createBuilder().setString("1.0").getResult();
}
Kaynak: http://bash.org/?946461
function one() { return Number.length; }
Bazı pornoların vakti geldi.
Bölüm 15.7.3 o devletler length
mülkiyeti Number
yapıcı olduğunu 1
(ve biz yapıcı belirtildiği gibi bir işlev nesnesi olduğunu biliyoruz 4.3.4 ) bölümünde, çünkü o en 15.3.5.1 diyor ki:
Length özelliğinin değeri, işlev tarafından beklenen "tipik" argüman sayısını belirten bir tamsayıdır. Bununla birlikte, dil, işlevin başka sayıda argümanla çağrılmasına izin verir.
… Ve kurucunun Number
tipik argüman sayısı 1 olduğu için length
, ' Number
dir 1
. Yani biri Javascript’teki bir sayının uzunluğunun 1 olduğunu söyleyebilir.
sub one{ $a[@a{@a[%a=map{@$a[@a{$a++=>$a}]+++$#$a+$a=>$a}$a]++}+$a] }
Geniş aç ve söyle aaaaa
.
Hala istenilen sonucu dönen ve sadece "bir" değişkeni kullanarak (ederken yaratıcı konsept, hem derinden mümkün olduğunca ... parantez içindeki parantez içinde iç içe parantezler oldu $a
, @a
, %a
, @$a
ve $#$a
tabii ki tüm farklı değişkenlerin vardır).
Bu, ortamını önemli ölçüde değiştirse de 1
, sonraki çağrılara her zaman geri dönecektir . Ne yaptığını anlamak için bu kodu çalıştırmayı düşünebilirsiniz:
use Data::Dump qw(dump);
for (1..8) {
one();
dump(@a);
dump(%a);
dump(@$a);
}
proc return1 {} {
catch {(5+2-3)/4}
}
Düşündüğünüz gibi çalışmıyor.
(5+2-3)/4
geçerli bir komut değil, bu yüzden bir hata atar ( return -code 1
), catch bu sayıyı döndürür.
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(){}
}
Başka pozitif sayısını döndürmek için ayarlanabilir n
yöntemleri ekleyerek printX
için X
1 ila n Splitter. Örneğin, modifiye Splitter
için
class Splitter{
public static char print1(){
return P.getNum();
}
public static char print2(){
return P.getNum();
}
}
Gerekli başka herhangi bir değişiklik yapmadan '2' döndürür. Eklenen yöntemler, adından ayrı olarak, tam bir kopyası olmalıdır print1
. Ayırıcıdaki yöntem sayısını almak için yansıma kullanır ve bu ada sahip bir işlevi çağırın. P.getNum
sonra çağrılır, yığın izini okur ve çağıran yöntemdeki son karakteri ayrıştırır ve görüntüler.
Arama print.getNum()
, '1' karakterini döndürür
Düzenleme - String / integer / etc değişmezleri kullanmamak için değiştirildi.
C #
Donanım mimarisine bağlı olmalıdır:
return IntPtr.Size / (Environment.Is64BitOperatingSystem ? 8 : 4);
VAOV!
Bunu (tartışmalı) birini komşu (tartışmalı) Collatz Konjeksiyonu ile birleştirmek :
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();
}
RNG'yi kötüye kullanmak ...
Random.new(56417).rand(10000)
0 ile 10000 arasında "rasgele" bir sayı oluşturur ve doğru tohumu seçtiğim için 1 olur.
Script Sayıyı bulmak için kullandım:
irb(main):001:0> (1..100000).select{|x|Random.new(x).rand(10000) == 1}
=> [14033, 25845, 35101, 36955, 45334, 56417, 87438, 87460, 99178, 99451]
bu kadar basit mi?
(+!~~{})
Bir klasik:
TRUE + 0
+
argümanını ortak bir türe zorlamaya çalışır: burada, öncelik sırası nedeniyle tam sayılara zorlanır. TRUE
Bir tamsayıya zorlama 1 verir.
+TRUE
çalışmıyor?
+TRUE
vermek olur TRUE
.
FALSE + 1
haklı mıyım?
Hatta parametreleri hakkında dokümantasyon da içerir.
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()
1'in bir son değerini döndürmeden önce her seferinde 1'i döndüren 111.111.111 kez kendisini arayacaktır.
Ayrıca hane sayısını belirleyebilirsiniz. Örneğin, one(3)
yalnızca 111 kez 1 döndürür.
Daha sonra bir açıklama ekleyebilirim, ancak şu anda gerçekten zamanım yok.
NA ^ 0
Gücüne İstenilen sayıda 0
DİR 1
.