Завдання
Створіть функцію / підпрограму, яка повертається 1. Ви можете зробити її настільки складною, як вам завгодно, доки вона повертається 1.
Правила
Запис з найбільшою нагодою виграє - як і будь-який конкурс на популярність. Удачі!
:)
Завдання
Створіть функцію / підпрограму, яка повертається 1. Ви можете зробити її настільки складною, як вам завгодно, доки вона повертається 1.
Правила
Запис з найбільшою нагодою виграє - як і будь-який конкурс на популярність. Удачі!
:)
Відповіді:
Сценарій для гольфу
1
Минуло багато часу, щоб оптимізувати цей код до його найчистішого, і, смію сказати, - прекрасного вигляду. Така витонченість мови не обходиться без років відданої практики. Програму, яка без Zero-Instruction-Set-Computer не може бути буквально ніколи не стискатися. Уся моя кар'єра з гольф-кодом веде до цього моменту.
Я вільний. Я живий.
Я бачу код, який лежить в основі Всесвіту.
without a Zero-Instruction-Set-Computer can literally never be compressed any further
. Наші сучасні комп'ютери можуть легко працювати з 0 програмами інструкцій. Вам потрібна мова, яка містить: "Порожня програма повертає 1" у своїй специфікації
Два приклади з використанням незрозумілих мовних функцій, таких як "сильний повернення" ( return!
) та оператор "підходи" ( -->
):
int foo(void) {
return! 0;
}
int bar(void) {
int i=7;
while (i --> 0);
return-i;
}
return-i
ключове слово: P
+++++++
+++++++
+++
+++
+++
+++
+++
++++++++++
++++++++++.
Або якщо вам не весело на вечірках:
+++++++[->+++++++<]>.
l
ніж на 1
.
one ← {⍴⍴⍴⍵}
⍴
дає розміри вектора. Вимір цього завжди є одновимірним, тому розмірність цього завжди є одним. Або:
"Rho, rho, rho з X
Завжди дорівнює одиниці,
Rho - це розмірність; rho rho, rank
APL - це весело!"
(Я не писав цього вірша, це Сталман.)
# @: # @: #
(Пробіли необов’язкові)
public static int funWithOne() {
try {
try {
return funWithOne();
} finally {
return funWithOne();
}
} catch (Throwable _) {
return 1;
}
}
Це зателефонує собі 2 1024 рази (ця кількість може змінюватись на різних платформах), перш ніж остаточно повернутися 1
. Не затримуйте дихання; це легко пройде набагато довше, ніж вік Всесвіту.
Риба
x посилає лічильник програми у випадковому напрямку. # - стіна, яку лічильник програм "відскакує". Це буквально блукає безцільно, поки не знайде «^», а потім надрукує 1 і закінчить.
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxx###xxxxxxxxxxxxxx
xxxxxxxxxx#;#xxxxxxxxxxxxxx
xxxxxxxxxx#n#xxxxxxxxxxxxxx
xxxxxxxxxx#1#xxxxxxxxxxxxxx
xxxxxxxxxx#^#xxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxxxxxx
x
в a ?
, кожного #
в a r
, n
в .
і ;
в @
. Однак ця> <> програма виглядає краще, ніж еквівалентна Befunge. Переклад показаний тут: ideone.com/ZyuSKk
?
в а x
і кожне #
в а !
(повинно працювати добре, коли залишилося те саме) і (звичайно), .
до n
і @
до ;
. ideone.com/gfApjT
expr 0
Це друкує 0, але повертає 1, що може стати несподіванкою для програмістів, які використовують інші мови. Ви можете вимкнути надрукований вихід і побачити код повернення, запустивши expr 0 >/dev/null; echo $?
.
$(pidof progname) < 1
Це одне з моїх улюблених специфічних питань для Java.
public static int ret1() {
try {
return 0;
} finally {
return 1;
}
}
try
блок, миттєво спрацьовує, finally
який повертає 1, перш ніж інший return
оператор може працювати.
function getOne() {
return -~![];
}
Пояснення:
![]
оцінює до false
.~false
стає -1
тому false
, що спочатку кидається на 0
, і ~0 == -1
.--1
оцінює до 1
.Чергуйте:
return +!([][~~{}])
Божевільний черговий (у кожному рядку рівно 80 символів):
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
або OO === good
?
data One = One deriving (Eq, Ord, Bounded, Enum, Show, Read)
Це визначає одне справжнє One
. Це One
і тип, що позначає Єдність , і конструктор One
, який є самою нульовою функцією, яка повертає одне істинне, і лише одне значення типу One
, яке ось One
.
Використання в 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
Повна Книга Одного зараз онлайн. Завантажуючи це, ви отримуєте обидва заповіту: обчислення та арифметику. Це дає змогу вивчити більше істин:
λ: 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;
}
Ви не сказали, що це повинно бути цілим числом 1.
float one_F(){
return FloatFactoryFactory.getInstance(FloatFactoryFactory.
defaultInstanceDescriptionString).getFactory(Locale.getLocale
("en-US")).createBuilder().setString("1.0").getResult();
}
Джерело: http://bash.org/?946461
function one() { return Number.length; }
Час для специфічного порно.
У розділі 15.7.3 зазначено, що length
властивість Number
конструктора є 1
(і ми знаємо, що конструктор є об'єктом функції, як зазначено в 4.3.4 ), і це тому, що в розділі 15.3.5.1 сказано:
Значення властивості length є цілим числом, яке вказує на "типове" число аргументів, очікуваних функцією. Однак мова дозволяє функцію викликати деяку іншу кількість аргументів.
... і так як Number
типовий номер конструктора аргументів 1, то length
з Number
поза 1
. Отже, можна сказати, що довжина числа в Javascript дорівнює 1.
sub one{ $a[@a{@a[%a=map{@$a[@a{$a++=>$a}]+++$#$a+$a=>$a}$a]++}+$a] }
Відкрийте широко і скажіть aaaaa
.
Креативна концепція полягала в фігурні дужки гнізда всередині дужок всередині дужок ... так глибоко , як це можливо, в той же час повернення бажаного результату, і тільки з допомогою «один» змінного ( $a
, @a
, %a
, @$a
і $#$a
, звичайно , є усіма різними змінними).
Хоча це суттєво модифікує його середовище, воно завжди повертається 1
при наступних дзвінках. Щоб зрозуміти, що це робиться, ви можете скористатися цим кодом:
use Data::Dump qw(dump);
for (1..8) {
one();
dump(@a);
dump(%a);
dump(@$a);
}
proc return1 {} {
catch {(5+2-3)/4}
}
Не працює, як ви могли подумати.
(5+2-3)/4
не є дійсною командою, тому вона видає помилку ( return -code 1
), catch повертає це число.
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(){}
}
Може бути скоригована , щоб повернутися в будь-яке інше позитивне число n
, додаючи методи printX
для X
від 1 до п в Splitter. Наприклад, зміни Splitter
до
class Splitter{
public static char print1(){
return P.getNum();
}
public static char print2(){
return P.getNum();
}
}
Повертається "2" без будь-яких інших змін. Додані методи, крім назви, повинні бути точним дублікатом print1
. Використовує відображення для отримання кількості методів у спліттері та викликає функцію з цим ім'ям. P.getNum
, який потім викликається, зчитує слід стека та аналізує останній символ у методі виклику та виводить його.
Виклик print.getNum()
повернення символу "1"
Редагувати - змінено для використання жодних рядків String / integer / etc.
C #
Це має залежати від апаратної архітектури:
return IntPtr.Size / (Environment.Is64BitOperatingSystem ? 8 : 4);
ОЦЕ ТАК!
З'єднання цієї (суперечливої) концепції з сусідньою (суперечливою) Конлактом Колац :
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 ...
Random.new(56417).rand(10000)
Створює "випадкове" число від 0 до 10000, і тому, що я вибрав правильне насіння, воно просто так; 1.)
Сценарій Я використовував, щоб знайти номер:
irb(main):001:0> (1..100000).select{|x|Random.new(x).rand(10000) == 1}
=> [14033, 25845, 35101, 36955, 45334, 56417, 87438, 87460, 99178, 99451]
це досить просто?
(+!~~{})
Класичний:
TRUE + 0
+
намагається примусити свій аргумент до загального типу: тут, через порядок пріоритетності, він примушує до цілих чисел. Примус TRUE
до цілого числа дає 1.
+TRUE
не працює?
+TRUE
трапляється давати TRUE
.
FALSE + 1
я прав?
Він навіть включає документацію щодо його параметрів.
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()
буде називати себе 111,111,111 разів, кожен раз повертаючи 1, перш ніж повертати остаточне значення 1.
Ви також можете вказати кількість цифр. Наприклад, one(3)
поверне 1 лише 111 разів.
Я можу додати пояснення пізніше, але на даний момент у мене дійсно немає часу.
NA ^ 0
Будь-яке число в ступені 0
IS 1
.