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-ianahtar kelime: P
+++++++
+++++++
+++
+++
+++
+++
+++
++++++++++
++++++++++.
Veya partilerde eğlenmiyorsanız:
+++++++[->+++++++<]>.
lbir 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
xbirini bir ?, her #içine r, niç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 xve her #bir içine !(çok aynı terk ettiğinde cezası çalışması gerekir) ve (elbette) .için nve @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;
}
}
trybloğa geri dönmeye çalışmak finally, diğer returnifadenin çalışabilmesi için önce 1 değerini döndüren anında ateşlenir .
function getOne() {
return -~![];
}
Açıklama:
![]değerlendirir false.~falseolur -1çünkü falsebirinciye döküm edilir 0ve ~0 == -1.--1değ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 == goodya OO === good?
data One = One deriving (Eq, Ord, Bounded, Enum, Show, Read)
Bu doğru olanı tanımlar One. Bu Oneifade eden türü hem birliğini ve yapıcı Onebu döner kendisi nullary fonksiyonu olan, bir doğru ve türden yalnızca bir değer One, Hani olup, One.
ghciREPL'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 lengthmülkiyeti Numberyapı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 Numbertipik argüman sayısı 1 olduğu için length, ' Numberdir 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, @$ave $#$atabii 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)/4geç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 nyöntemleri ekleyerek printXiçin X1 ila n Splitter. Örneğin, modifiye Splitteriç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.getNumsonra ç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. TRUEBir tamsayıya zorlama 1 verir.
+TRUEçalışmıyor?
+TRUEvermek olur TRUE.
FALSE + 1haklı 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 0DİR 1.