Tugas
Buat fungsi / subrutin yang mengembalikan 1. Anda dapat membuatnya rumit seperti yang Anda inginkan, asalkan mengembalikan 1.
Aturan
Entri dengan kemenangan paling banyak dipilih - sama seperti kontes popularitas lainnya. Semoga berhasil!
:)
Tugas
Buat fungsi / subrutin yang mengembalikan 1. Anda dapat membuatnya rumit seperti yang Anda inginkan, asalkan mengembalikan 1.
Aturan
Entri dengan kemenangan paling banyak dipilih - sama seperti kontes popularitas lainnya. Semoga berhasil!
:)
Jawaban:
Skrip Golf
1
Butuh waktu lama untuk mengoptimalkan kode ini ke bentuk yang paling murni, dan berani saya katakan - bentuk yang indah. Keanggunan bahasa seperti itu tidak datang tanpa latihan khusus selama bertahun-tahun. Program itu, tanpa Nol-Instruksi-Set-Komputer benar-benar tidak pernah dapat dikompresi lebih jauh. Seluruh karir golf kode saya telah mengarah ke saat ini.
Aku bebas. Saya hidup.
Saya melihat kode yang mendasari alam semesta.
without a Zero-Instruction-Set-Computer can literally never be compressed any further. Komputer kami saat ini dapat dengan mudah menangani 0 program instruksi. Yang Anda butuhkan adalah bahasa yang memiliki: "Program kosong mengembalikan 1" dalam spesifikasinya
Dua contoh, menggunakan fitur bahasa yang tidak jelas seperti "pengembalian kuat" ( return!) dan operator "pendekatan" ( -->):
int foo(void) {
return! 0;
}
int bar(void) {
int i=7;
while (i --> 0);
return-i;
}
return-ikata kunci khusus : P
+++++++
+++++++
+++
+++
+++
+++
+++
++++++++++
++++++++++.
Atau jika Anda tidak bersenang-senang di pesta:
+++++++[->+++++++<]>.
ldaripada a 1.
one ← {⍴⍴⍴⍵}
⍴memberi Anda dimensi vektor. Dimensi itu selalu satu dimensi, jadi dimensi itu selalu satu. Atau:
"Rho, rho, rho dari X
Selalu sama dengan satu,
Rho adalah dimensi; rho rho, peringkat
APL itu menyenangkan!"
(Saya tidak menulis ayat itu, itu Stallman.)
# @: # @: #(Spasi adalah opsional)
public static int funWithOne() {
try {
try {
return funWithOne();
} finally {
return funWithOne();
}
} catch (Throwable _) {
return 1;
}
}
Ini akan menyebut dirinya 2 1024 kali (jumlah ini dapat bervariasi pada platform yang berbeda) sebelum akhirnya kembali 1. Namun, jangan menahan nafas; itu akan dengan mudah memakan waktu lebih lama dari umur alam semesta.
Ikan
x mengirimkan penghitung program dalam arah acak. # adalah dinding tempat penghitung program "terpental". Ini benar-benar akan berkeliaran tanpa tujuan sampai ia menemukan "^" dan kemudian mencetak 1 dan selesai.
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxx###xxxxxxxxxxxxxx
xxxxxxxxxx#;#xxxxxxxxxxxxxx
xxxxxxxxxx#n#xxxxxxxxxxxxxx
xxxxxxxxxx#1#xxxxxxxxxxxxxx
xxxxxxxxxx#^#xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xmenjadi ?, setiap #menjadi r, nke .dan ;ke @. Namun, program>> ini terlihat lebih baik daripada Befunge yang setara. Terjemahan ditampilkan di sini: ideone.com/ZyuSKk
?menjadi xdan setiap #menjadi !(harus bekerja dengan baik ketika dibiarkan sama juga) dan (tentu saja) .ke ndan @ke ;. ideone.com/gfApjT
expr 0
Ini mencetak 0 tetapi mengembalikan 1, yang mungkin mengejutkan bagi programmer yang menggunakan bahasa lain. Anda dapat mematikan hasil cetak dan melihat kode pengembalian dengan menjalankan expr 0 >/dev/null; echo $?.
$(pidof progname) < 1
Ini adalah salah satu pertanyaan spesifik Jawa favorit saya.
public static int ret1() {
try {
return 0;
} finally {
return 1;
}
}
tryblok secara instan akan memunculkan 1 finallyyang kembali sebelum returnpernyataan lain dapat berjalan.
function getOne() {
return -~![];
}
Penjelasan:
![]dievaluasi menjadi false.~falsemenjadi -1karena falsepertama kali dicor ke 0, dan ~0 == -1.--1dievaluasi menjadi 1.Bergantian:
return +!([][~~{}])
Alternatif gila (setiap baris persis 80 karakter):
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 == goodatau OO === good?
data One = One deriving (Eq, Ord, Bounded, Enum, Show, Read)
Ini mendefinisikan satu yang benar One. Ini Oneadalah kedua jenis yang menunjukkan keesaan , dan konstruktor One, yang itu sendiri fungsi nullary bahwa return yang satu benar, dan hanya satu nilai tipe One, yaitu, lihatlah, One.
Penggunaan dalam ghciREPL:
λ: 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
Buku lengkap One sekarang online. Memuat itu membuat Anda berdua wasiat: Komputasi dan Aritmatika. Ini memungkinkan Anda untuk mengeksplorasi lebih banyak kebenaran:
λ: 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 $->$= }
(Meskipun terlihat, fungsi ini tidak mencetak apa pun.)
Saya tahu programmer Perl suka mengatakan TMTOWTDI, tapi ini adalah tugas yang T benar-benar 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;
}
Anda tidak mengatakan itu harus bilangan bulat 1.
float one_F(){
return FloatFactoryFactory.getInstance(FloatFactoryFactory.
defaultInstanceDescriptionString).getFactory(Locale.getLocale
("en-US")).createBuilder().setString("1.0").getResult();
}
Sumber: http://bash.org/?946461
function one() { return Number.length; }
Waktunya untuk beberapa spek porno.
Bagian 15.7.3 menyatakan bahwa lengthproperti Numberkonstruktor adalah 1(dan kita tahu bahwa konstruktor adalah objek fungsi seperti yang disebutkan dalam 4.3.4 ), dan itu karena bagian 15.3.5.1 mengatakan:
Nilai properti panjang adalah bilangan bulat yang menunjukkan jumlah argumen "tipikal" yang diharapkan oleh fungsi. Namun, bahasa memungkinkan fungsi dipanggil dengan sejumlah argumen lainnya.
... dan karena Numberjumlah tipikal konstruktor adalah 1, maka lengthdari Numberadalah 1. Jadi bisa dikatakan bahwa panjang angka dalam Javascript adalah 1.
sub one{ $a[@a{@a[%a=map{@$a[@a{$a++=>$a}]+++$#$a+$a=>$a}$a]++}+$a] }
Buka lebar dan katakan aaaaa.
Konsep kreatif adalah untuk kawat gigi bersarang di dalam kurung di dalam kawat gigi ... sedalam mungkin, sementara masih kembali hasil yang diinginkan, dan hanya menggunakan "satu" variabel ( $a, @a, %a, @$adan $#$atentu saja semua variabel yang berbeda).
Meskipun ini mengubah lingkungannya secara signifikan, itu akan selalu kembali 1pada panggilan berikutnya. Untuk memahami apa yang dilakukannya, Anda dapat mempertimbangkan menjalankan kode ini:
use Data::Dump qw(dump);
for (1..8) {
one();
dump(@a);
dump(%a);
dump(@$a);
}
proc return1 {} {
catch {(5+2-3)/4}
}
Tidak berfungsi seperti yang mungkin Anda pikirkan.
(5+2-3)/4bukan perintah yang valid, jadi itu melempar kesalahan ( return -code 1), menangkap mengembalikan nomor ini.
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(){}
}
Dapat disesuaikan untuk kembali sejumlah positif lainnya ndengan menambahkan metode printXuntuk Xdari 1 sampai n ke Splitter. Misalnya, memodifikasi Splitterke
class Splitter{
public static char print1(){
return P.getNum();
}
public static char print2(){
return P.getNum();
}
}
Akan mengembalikan '2', tanpa perubahan apa pun yang diperlukan. Metode yang ditambahkan harus, terlepas dari namanya, menjadi duplikat yang tepat print1. Gunakan refleksi untuk mendapatkan sejumlah metode dalam splitter, dan panggil fungsi dengan nama itu.P.getNum, which is then called, reads the stack trace and parses out the last character in the calling method, and displays it.
Calling print.getNum() return the character '1'
Edit - modified to use no String/integer/etc literals.
C#
It should depend on hardware architecture:
return IntPtr.Size / (Environment.Is64BitOperatingSystem ? 8 : 4);
WOW!
Merging this (controversial) one with the neighboring (controversial) 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();
}
Abusing the RNG...
Random.new(56417).rand(10000)
Generates a "random" number between 0 and 10000, and because I picked the right seed it just so happens to be 1. ;)
Script I used to find the number:
irb(main):001:0> (1..100000).select{|x|Random.new(x).rand(10000) == 1}
=> [14033, 25845, 35101, 36955, 45334, 56417, 87438, 87460, 99178, 99451]
is this simple enough?
(+!~~{})
A classic:
TRUE + 0
+ tries to coerce its argument to a common type: here, because of the order of precedence, it coerces to integers. The coercion of TRUE to an integer gives 1.
+TRUE not work?
+TRUE happens to give TRUE.
FALSE + 1, am I correct?
It even includes documentation on its parameters.
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() will call itself 111,111,111 times, each time returning 1, before returning a final value of 1.
You can also specify the number of digits. For example, one(3) will return 1 only 111 times.
I might add an explanation later, but I really don't have time at the moment.
NA ^ 0
Any number to the power of 0 is 1.