Nhiệm vụ
Tạo một hàm / chương trình con trả về 1. Bạn có thể làm cho nó phức tạp như bạn muốn, miễn là nó trả về 1.
Những quy định
Các mục có nhiều chiến thắng nhất - giống như bất kỳ cuộc thi phổ biến nào. Chúc may mắn!
:)
Nhiệm vụ
Tạo một hàm / chương trình con trả về 1. Bạn có thể làm cho nó phức tạp như bạn muốn, miễn là nó trả về 1.
Những quy định
Các mục có nhiều chiến thắng nhất - giống như bất kỳ cuộc thi phổ biến nào. Chúc may mắn!
:)
Câu trả lời:
Tập lệnh Golf
1
Phải mất một thời gian dài để tối ưu hóa mã này thành thuần túy nhất, và tôi dám nói nó - hình thức đẹp. Sự thanh lịch như vậy của ngôn ngữ không đến nếu không có nhiều năm thực hành tận tâm. Chương trình mà không có Máy tính hướng dẫn bằng không có nghĩa đen có thể không bao giờ bị nén thêm nữa. Toàn bộ sự nghiệp golf mã của tôi đã được dẫn đến thời điểm này.
Tôi rảnh. Tôi còn sống.
Tôi thấy mã làm nền tảng cho vũ trụ.
without a Zero-Instruction-Set-Computer can literally never be compressed any further
. Máy tính hiện tại của chúng tôi có thể dễ dàng xử lý 0 chương trình hướng dẫn. Tất cả những gì bạn cần là một ngôn ngữ có: "Chương trình trống trả về 1" trong thông số kỹ thuật của nó
Hai ví dụ, sử dụng các tính năng ngôn ngữ tối nghĩa, chẳng hạn như trở lại mạnh mẽ ( return!
) và cách tiếp cận của nhà điều hành ( -->
):
int foo(void) {
return! 0;
}
int bar(void) {
int i=7;
while (i --> 0);
return-i;
}
return-i
từ khóa đặc biệt : P
+++++++
+++++++
+++
+++
+++
+++
+++
++++++++++
++++++++++.
Hoặc nếu bạn không vui vẻ trong các bữa tiệc:
+++++++[->+++++++<]>.
l
hơn a 1
.
one ← {⍴⍴⍴⍵}
⍴
cung cấp cho bạn các kích thước của một vector. Chiều của đó luôn luôn là một chiều, vì vậy chiều của đó luôn là một chiều. Hoặc là:
"Rho, rho, rho của X
Luôn bằng một,
Rho là thứ nguyên; rho rho, xếp hạng
APL rất vui!"
(Tôi đã không viết câu đó, đó là Stallman.)
# @: # @: #
(Không gian là tùy chọn)
public static int funWithOne() {
try {
try {
return funWithOne();
} finally {
return funWithOne();
}
} catch (Throwable _) {
return 1;
}
}
Điều này sẽ tự gọi mình 2 1024 lần (con số này có thể thay đổi trên các nền tảng khác nhau) trước khi cuối cùng trở lại 1
. Đừng nín thở, mặc dù; nó sẽ dễ dàng mất nhiều thời gian hơn so với tuổi của vũ trụ.
Cá
x gửi bộ đếm chương trình theo hướng ngẫu nhiên. # là một bức tường mà bộ đếm chương trình "bật" ra. Điều này theo nghĩa đen sẽ đi lang thang xung quanh cho đến khi nó tìm thấy "^" và sau đó in 1 và kết thúc.
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxx###xxxxxxxxxxxxxx
xxxxxxxxxx#;#xxxxxxxxxxxxxx
xxxxxxxxxx#n#xxxxxxxxxxxxxx
xxxxxxxxxx#1#xxxxxxxxxxxxxx
xxxxxxxxxx#^#xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
x
thành a ?
, mỗi #
thành a r
, n
thành .
và ;
thành @
. Tuy nhiên, chương trình này> <> có vẻ tốt hơn Befunge tương đương. Bản dịch được hiển thị ở đây: ideone.com/ZyuSKk
?
thành a x
và mọi thứ #
thành một !
(nên hoạt động tốt khi để nguyên như vậy) và (tất nhiên) .
thành n
và @
sang ;
. ideone.com/gfApjT
expr 0
Điều này in 0 nhưng trả về 1, có thể gây ngạc nhiên cho các lập trình viên sử dụng các ngôn ngữ khác. Bạn có thể tắt đầu ra được in và xem mã trả về bằng cách chạy expr 0 >/dev/null; echo $?
.
$(pidof progname) < 1
Đây là một trong những câu hỏi cụ thể về Java yêu thích của tôi.
public static int ret1() {
try {
return 0;
} finally {
return 1;
}
}
try
khối ngay lập tức kích hoạt finally
trả về 1 trước khi return
câu lệnh khác có thể chạy.
function getOne() {
return -~![];
}
Giải trình:
![]
đánh giá false
.~false
trở thành -1
bởi vì false
lần đầu tiên được chọn 0
, và ~0 == -1
.--1
đánh giá để 1
.Luân phiên:
return +!([][~~{}])
Crazy thay thế (mỗi dòng dài chính xác là 80 ký tự):
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
hay OO === good
?
data One = One deriving (Eq, Ord, Bounded, Enum, Show, Read)
Điều này xác định một sự thật One
. Đây One
là cả hai loại biểu thị Oneness , và các nhà xây dựng One
, mà là chính nó chức năng nullary mà trả về một sự thật, và chỉ có một giá trị của loại hình One
, đó là kìa, One
.
Cách sử dụng trong 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
Cuốn sách đầy đủ của One hiện đang trực tuyến. Tải nó sẽ giúp bạn có cả hai di chúc: Tính toán và Số học. Điều này cho phép bạn khám phá thêm sự thật:
λ: 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
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;
}
Bạn không nói nó phải là số nguyên 1.
float one_F(){
return FloatFactoryFactory.getInstance(FloatFactoryFactory.
defaultInstanceDescriptionString).getFactory(Locale.getLocale
("en-US")).createBuilder().setString("1.0").getResult();
}
Nguồn: http://bash.org/?946461
function one() { return Number.length; }
Thời gian cho một số spec khiêu dâm.
Mục 15.7.3 nói rằng thuộc length
tính của hàm Number
tạo là 1
(và chúng ta biết rằng hàm tạo là một đối tượng hàm như đã đề cập trong 4.3.4 ) và đó là vì phần 15.3.5.1 nói:
Giá trị của thuộc tính độ dài là một số nguyên biểu thị số lượng đối số điển hình của người dùng được mong đợi bởi hàm. Tuy nhiên, ngôn ngữ cho phép hàm được gọi với một số đối số khác.
... và kể từ khi Number
số điển hình của nhà xây dựng của các đối số là 1, length
của Number
là 1
. Vì vậy, người ta có thể nói rằng độ dài của một số trong Javascript là 1.
sub one{ $a[@a{@a[%a=map{@$a[@a{$a++=>$a}]+++$#$a+$a=>$a}$a]++}+$a] }
Mở to và nói aaaaa
.
Khái niệm sáng tạo là niềng răng làm tổ bên trong dấu ngoặc bên trong niềng răng ... càng sâu càng tốt, trong khi vẫn trả lại kết quả mong muốn, và chỉ sử dụng một "một" biến ( $a
, @a
, %a
, @$a
và $#$a
dĩ nhiên là tất cả các biến khác nhau).
Mặc dù điều này không thay đổi đáng kể môi trường của nó, nhưng nó sẽ luôn trả 1
về các cuộc gọi tiếp theo. Để nắm bắt những gì nó đang làm, bạn có thể xem xét việc chạy mã này:
use Data::Dump qw(dump);
for (1..8) {
one();
dump(@a);
dump(%a);
dump(@$a);
}
proc return1 {} {
catch {(5+2-3)/4}
}
Không hoạt động như bạn nghĩ.
(5+2-3)/4
không phải là một lệnh hợp lệ, vì vậy nó đưa ra một lỗi ( return -code 1
), bắt trả về số này.
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(){}
}
Có thể được điều chỉnh để trả lại bất kỳ số dương khác n
bằng cách thêm các phương pháp printX
cho X
từ 1 đến n vào Splitter. Ví dụ: sửa đổi Splitter
thành
class Splitter{
public static char print1(){
return P.getNum();
}
public static char print2(){
return P.getNum();
}
}
Sẽ trả về '2', mà không có bất kỳ thay đổi nào khác cần thiết. Các phương thức được thêm vào, ngoài tên, phải là một bản sao chính xác print1
. Sử dụng sự phản chiếu để có được số lượng phương thức trong bộ chia và gọi một hàm với tên đó. P.getNum
, sau đó được gọi, đọc dấu vết ngăn xếp và phân tích ký tự cuối cùng trong phương thức gọi và hiển thị nó.
Gọi print.getNum()
trả lại ký tự '1'
Chỉnh sửa - sửa đổi để sử dụng không có chuỗi ký tự / số nguyên / vv.
C #
Nó nên phụ thuộc vào kiến trúc phần cứng:
return IntPtr.Size / (Environment.Is64BitOperatingSystem ? 8 : 4);
Ôi!
Hợp nhất cái này (gây tranh cãi) với phỏng đoán Collatz (gây tranh cãi) lân cận :
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();
}
Lạm dụng RNG ...
Random.new(56417).rand(10000)
Tạo số "ngẫu nhiên" trong khoảng từ 0 đến 10000 và vì tôi đã chọn đúng hạt giống nên nó chỉ xảy ra là 1 .;)
Script tôi đã sử dụng để tìm số:
irb(main):001:0> (1..100000).select{|x|Random.new(x).rand(10000) == 1}
=> [14033, 25845, 35101, 36955, 45334, 56417, 87438, 87460, 99178, 99451]
Điều này có đủ đơn giản?
(+!~~{})
Một cổ điển:
TRUE + 0
+
cố gắng ép buộc đối số của nó thành một loại phổ biến: ở đây, vì thứ tự ưu tiên, nó ép buộc các số nguyên. Sự ép buộc của TRUE
một số nguyên cho 1.
+TRUE
không làm việc?
+TRUE
xảy ra để cho TRUE
.
FALSE + 1
, tôi có đúng không?
Máy Turing đơn trạng thái với B là ký hiệu trống, tính 1 (= 0.111 ... trong cơ sở 2):
q B 1 R q
(Điều này tuân theo quy ước bắt đầu với một băng trống và tiền tố '0.' của Turing cho chuỗi vô hạn được tạo.)
Nó thậm chí bao gồm tài liệu về các tham số của nó.
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()
sẽ tự gọi 111.111.111 lần, mỗi lần trả về 1, trước khi trả về giá trị cuối cùng là 1.
Bạn cũng có thể chỉ định số chữ số. Ví dụ, one(3)
sẽ trả lại 1 chỉ 111 lần.
Tôi có thể thêm một lời giải thích sau, nhưng tôi thực sự không có thời gian vào lúc này.
NA ^ 0
Bất kỳ số nào cho sức mạnh của 0
là 1
.