Вихід Pi без математики [закрито]


56

У якомога менше байтах ваше завдання - написати програму, яка виводить:

3.14

У святкування пізнього дня Пі звичайно! :)

Правила

Ви можете робити це все, що завгодно, але є деякі обмеження.

  • Ви не можете використовувати арифметичні операції ніде в програмі. Це включає в себе +, -, *, /, %, ^(зведення в ступінь), і т.д ... Це також включає в себе збільшенням (зазвичай ++), декремента ( --), бітові операції , і будь-які вбудовані функції , які можуть бути використані в якості заміни , таких як sum(), prod(), mod(), double(), pow(), sqrt(), inc(), dec()тощо ... (розсуд автора)
  • Цифри 3, 1і 4можуть НЕ з'являтися в будь-якому місці вашого коду.
  • Ви можете НЕ використовувати будь-які зумовлені змінні / постійні , що ваш язик може мати в якості заміни 3, 1і 4. (На розсуд автора)
  • Ви також можете НЕ використовувати будь-які тригонометричні функції , такі як sin(), cos(), tan(), arcsin(), arccos(), arctan(), sinh(), cosh(), tanh()і т.д. ... (розсуд автора)
  • Ви не можете використовувати вбудовані або заздалегідь задані значення Pi (або 3.14). Немає веб-запитів .
  • Ваша програма не може вимагати будь-якого введення (крім запуску).
  • 3.14це єдине , що ви можете вивести, воно не може бути частиною більш тривалого / великого результату.

Переможець

Відповідь з найменшою кількістю байтів 18 квітня виграє. Удачі!

Чекаємо на розумні відповіді розумних розумів! Мальбге кого? : P


3
Ви можете уточнити, що ^це оператор експоненції, а не побітовий оператор XOR.
ace_HongKongIndependence

2
Чи дозволені оператори побітових операцій?
ProgramFOX

1
@ProgramFOX Ну, їх можна використовувати як заміну для звичайних операцій, отже, ні. Не дозволяється. Я відредагую публікацію.
kukac67

1
Дозволені веб-запити?
швейцарський

7
@swish: Я б не користувався веб-запитами, оскільки це належить до списку стандартних "лазівки", які вже не смішні
ProgramFOX

Відповіді:


25

CJam - 8 6

S`,'.E

CJam - це нова мова, яку я розробляю, схожа на GolfScript - http://sf.net/p/cjam .
Ось пояснення:

S- змінна, попередньо ініціалізована у простір (""),
`генерує рядкове представлення останнього значення - яке саме " "(3 символи)
,обчислює довжину рядка (3)
'.- символ крапки
Eє змінною, попередньо ініціалізованою на 14; 3, 1 і 4 заборонено, але про них 14 нічого не сказано :)

Кредити для Doorknob за ідею беттику


1
@Brilliand я б прийняв використання E.
kukac67

6
@ kukac67 Поки я ще не зробив офіційний реліз (прийшов сьогодні), я вже зробив доступний поточний код CJam через hg. Якщо ви отримаєте код CJam за 1 день до того, як ви опублікували питання, він запустить мою програму правильно (тому я не вносив змін для вирішення цієї проблеми). Але я все одно не заперечую проти.
aditsu

33
час розробити HQ9 + π ...
Nzall

2
@AnonymousPi Усі можуть вільно голосувати за обрані вами відповіді. Можливо, вони більше вражені іншими відповідями, навіть якщо вони не такі короткі.
aditsu

2
Чому у вас змінна преініціалізована до 14?
user2357112

113

PHP - 22 байти

<?=date('n.j',8899e5);

День Пі в 1998 році був дуже класним!


13
@ kukac67: n.jце формат і 8899e5є часовою міткою Unix 14 березня 1998 року.
ProgramFOX

7
Це так розумно.
Амаль Муралі

7
Ви можете зберегти 7 символів, видаливши ,8899e5. Це буде правильно раз на рік.
Дамір Касипович

1
@Timo Ви маєте рацію, але вона містить незаконну цифру "3";).
Blackhole

18
@Blackhole 20 байт: <?=date('w.W',78e5);1 квітня 1970 року була середа на 14 тижні.
Прим

92

С, 39

Передбачається, що машина малоінтенсивна і використовує стандарт IEEE з плаваючою комою.

main(){printf("%.2f",*(float*)"P@I@");}

Забавним фактом є те, що "P@I@"насправді не пов'язане, PIа еквівалентне 0x40494050представництву3.144550323486328

http://ideone.com/uXVEtl


3
Це досить приголомшливо.
wchargin

1
Ваш код передбачає набір типів на машині з малою мірою.
Наюкі

@NayukiMinase, так, ти маєш рацію, варто це вказати. А також передбачається використання стандарту IEEE з плаваючою комою.
Майкл М.

І він містить невизначену поведінку (неявна декларація варіативної функції)
rubenvb

5
Цей код фактично передбачає, що машина - машина Майкла :-).
Конрад Боровський

50

DC , 11 9 байт

zE[.]znPp
  • z Натисніть на поточну глибину потоку (0)
  • EНатисніть E 16 (== 14 10 )
  • [.] Натисніть на рядок "."
  • z Натисніть на поточну глибину потоку (3)
  • n Поп 3 та роздрукуйте як номер
  • PПоп "." і друкувати як char
  • p Поп 14 та друкуйте як номер за допомогою нового рядка

Вихід:

$ dc <<< zE[.]znPp
3.14
$ 

Отже, "використовувати вхідну базу" - це оператор? Це ніби пахне арифметичною операцією, але, ймовірно, все ще діє.
Brilliand

@Brilliand У питанні нічого, що забороняє базові конверсії, я не бачу. Насправді ОП, як видається, заохочує базові перетворення у коментарі тут codegolf.stackexchange.com/a/25681/11259
Digital Trauma

Я згоден, що це дійсно; Я просто думаю, що коли базове перетворення є оператором, а не частиною синтаксису чисел, воно розмиває межу між вбудованими даними та арифметичною операцією.
Brilliand

Я думаю, це має бути 15 байт?
Зареєстрований користувач

9
@AdityaPatil Чому? dcє мовою та перекладачем, як і всі інші мови тут. dc -e це лише виклик цього перекладача. Я міг би так само легко зберегти 9-байтну програму у файл і запустити dc pi.dc. Якщо ці байти потрібно порахувати, те саме слід було б застосувати до всіх інших мов. наприклад, включити python всі записи python або ruby golfscript.rb всі записи golfscript. Я вважаю, що узгоджена конвенція тут не повинна включати їх, якщо тільки не потрібно приймати спеціальні варіанти.
Цифрова травма

42

JavaScript ( ES5 ) 20 байт

Варіація рішення JS m.buettner.

(x='.'+0xE).length+x

Редагувати: JavaScript ( ES5 ) 18 байт

Варіант ідеї ComFreek про використання функції декодування base64.

atob('Mw')+'.'+0xE

Редагувати: Javascript ( ES5 ) 16 байт

Якщо +оператору Ury дозволено передавати рядок до числа, його можна зменшити до:

+atob('MDMuMTQ')

ОЦЕ ТАК! Це справді розумно!
kukac67

9
@NateEldredge Це об'єднання рядків, а не арифметичне.
tomsmeding

використання +тут прийнято?
phuclv

1
Я вважаю, що рішення Javascript є найелегантнішим, і я збирався опублікувати шахту, поки не помітив, що в ньому є "4": atob ("My4xNA == '), lol.
rdev5

1
@Денніс ти маєш рацію, він все ще є. Це навіть є, якщо скопіювати + вставити результат з консолі. Я не задоволений цим, тому повернусь до 16-байтного рішення.
nderscore

39

Haskell, 41 байт

Коли в Австралії день пі?

p=(\(a:n:y:t:i:m:e:_)->[m,a,t,e])['.'..]

Відредаговано, щоб додати: як і інша відповідь Haskell, яка виводить рядок, так і цитати. Ви можете набрати 33 та бути строго в рамках правил, але це менш весело:

p=putStr$map([','..]!!)[7,2,5,8]

Ха-ха, вау. Це добре!
Ри-

Чи можете ви пояснити, чому це працює?
yhager

5
Мені це дуже подобається, +1. Але я думаю, що технічно ".." викликає оператора приросту, що було заборонено. (Насправді обнародування також посилається на збільшення операції, тому його також слід заборонити ;-)
Марк ван Левен

Я насправді думав про це - у мене була ще коротша відповідь: p=[2.9,2.92..]!!([0,6..]!!2)... і в цьому все ..виглядає неправильно. Але Хаскелл сильно набраний, і приріст у відповіді, яку я дав, Charне Numє і не є арифметикою - річ, яка насправді заборонена. Мені потрібно fromEnumперетворити символи назад у числа, щоб таким чином їх використовувати. У всякому разі, моя совість чиста :)
bazzargh

6
@yhager: ['.' ..] - це послідовність символів "./0123456 ..." (тощо). (a: n: y: t: i: m: e: _) - це відповідність шаблону, що витягує перші 7 символів, [m, a, t, e] перепорядковує 4 з них у "3.14". Знаючи, що це те, що ви хочете зробити, справа в пошуку словника, щоб знайти слова з потрібною структурою. Що я і зробив ... наприклад, інша пара була "найгуднішою мастю". Тоді ви придумаєте жарт :)
bazzargh

32

Код Морзе, 33 байти

morse -d ...-- .-.-.- .---- ....-

Технічно кажучи, інформація займає лише 21 байт.


11
Нам, безумовно, потрібно більше рішень для гольфу в кодах Морзе ...
перестали повертати проти годинника, це

26
Технічно кажучи, я б сказав 21 біт , а не байт
Майкл М.

14
@Michael, оскільки код Морзе може бути точкою, тире чи пробілом, чи не потрібно йому більше 1 біта для зберігання 1 операції?
smcg

5
@smcg ButSpacesAreForWeakPeopleWhoCan'tReadThingsLikeThis
Cole Johnson

8
Наскільки мені подобається код морзе (і, отже, це рішення) - але це не проти правила 3: "Ви не можете використовувати жодних заздалегідь визначених змінних / констант, які можуть мати ваша мова в якості заміни для 3, 1 і 4." або навіть правило 2: "Цифри 3, 1 і 4 можуть не з’являтися ніде у вашому коді."
kratenko

27

J - 15 11 10 char

Зробили його коротшим, використовуючи фантастичне i:.

6{i:6.28j8

Пояснили:

  • 6.28j8 - Комплексне число 6,28 + 8i.
  • i:- Тут відбувається магія. i:на комплексне число A + Bi, B ≠ 0 приймає B + 1 однаково розташованих точок від інтервалу [-A, A].
  • 6{ - Візьміть елемент в індексі 6, який так само становить 3,14.

Раніше у нас були такі дурниці:

|.'.'2}":22b8d5

Пояснюється вибухом:

         22b8d5  NB. 8d5 in base 22 = 4163
       ":        NB. convert to string
  '.'2}          NB. change character at index 2 to '.'
|.               NB. reverse to make '3.14'

Замість цього |.'.'2}":22b8d5ви можете зберегти 2 символи, вибравши число, яке не потребує змінити:'.'1}":16bbc6
раціоналіс

3
@epicwisdom Цифри 3, 1 і 4 заборонені. Я повинен використовувати число у формі, 41X3тому що мені дозволяється змінювати символи лише в індексах 0 і 2.
Алгоритм

20

Командний рядок Linux, 35 байт

Цей ніде не виграє, але тут це для задоволення:

ping -w2 67502862|grep -oP '.\..\d'

Вихід (через 2 секунди):

$ ping -w2 67502862|grep -oP '.\..\d'
3.14
$

Цитата з питання: "Немає веб-запитів".
Дверна ручка

9
@Doorknob ICMP echo request! = Веб-запит. Незважаючи на те, пінг - це 4.6.3.14, звідки я не отримую відповіді, тому не подобається, що я отримую будь-яку корисну інформацію з Інтернету
Digital Trauma

10
@Doorknob Але якщо це все одно вас турбує, ми можемо це зробити :;ping -t${#?} -qc2 67502862|grep -oP '.\..\d'. Це встановлює значення TTL на 1, тому маршрутизатор скидає вихідне відлуння ICMP, перш ніж воно потрапить будь-де поблизу Інтернету
Digital Trauma

1
Ви можете зберегти 9 с за допомогою ping -w2 67502862. (Редагувати Ніндзя, тому що, перш ніж я радив w1, майже порушив правила.)
lolesque

@lolesque Дякую Не поліпшує рахунок за гольфом ;-)
Digital Trauma

16

GolfScript, 18 13 12

'.'.`,\.,n`,

Стара версія:

'...','.'.,'....',

Це дуже артистично, всього 3 унікальних персонажа! ;)

Як це працює:

# cmd   # stack
'...',  # 3
'.'.    # 3 '.' '.'
,       # 3 '.' 1
'....', # 3 '.' 1 4

Ось пояснення з 12-картковою версією (набагато цікавіше, IMO):

'.' # '.'
.`, # '.' 3
\.  # 3 '.' '.'
,   # 3 '.' 1
n`, # 3 '.' 1 4

Це працює тому, що n`,є 4, оскільки n`є '"\n"'. Така ж логіка для '.'`,. Також він заміняється замість того, щоб створювати нову рядок для збереження знака (спасибі @algorithmshark).

Альтернативна версія:

'pi ','.'.,'day!',

або

'Hi ','.'.,'PPCG',

Або що-небудь у цих струнах, насправді. : P


Тільки 3 різних персонажа, класно :)
aditsu

Чи '.'.`,\.,n`,вдасться врятувати чародійку? Повторне використання '.'дублювання та заміни.
алгоритм

@algorithmshark Так, дякую!
Дверна ручка

Це дуже розумно! +1
VisioN

це схоже на версію коду Морзе
pwned

14

Відповідь ОП.

Математика, 21 20 18

Це відчуває себе дешево ...

Range[2,5,.06][[20]]

або

Range[2,5,.02][[58]]

Зрозуміли, як зробити 18:

Range[-.86,5][[5]]

Хаскелл, 49 48 12

(48 включає новий символ рядка)

p=[-6..]
r=concat$show(p!!9):".":(show$p!!20):[]

Запустіть його, викликавши rфункцію.

Використовуючи метод, як у Mathematica вище, ви можете ввести це в GHCi:

[-2.86..]!!6

Ява, 87 86

class P{public static void main(String[]a){System.out.print("tri".length()+"."+0xe);}}

Скала, 27

Перекладено з Java, як запропонував Score_Under . (Я дійсно не знаю Скалу)

print("tri".length+"."+0xe)

О, 0xeрозумний. Ви не заперечуєте, якщо я вдосконалюю свою відповідь на тему JS? ;)
Мартін Ендер

Більшість Java може бути безпосередньо перетворена в scala, що зазвичай коротше, якщо ви дійсно хочете економити на байтах - якщо ви використовуєте його як сценарій, вся справа просто: print ("tri" .length + "." + 0xe)
Score_Under

Так, я подумав про те саме, що у Джулії коротше, ніж [-.86:5][5]на 11, але я вважав, що це не рахується, оскільки діапазони - це просто математика.
gggg

12

Баш, 50

Довідки / повідомлення про помилки не є зовнішніми ресурсами, вони є результатом команди!

Якщо що-небудь є порушенням правил, це все. Він використовує збіг, який STDERRнадає точна команда довідкового повідомлення

ping6

становить 314 символів (принаймні, на Ubuntu 13.10 с iputils-121221). EDIT: Я ціную, що це набагато менш портативно, ніж я очікував ...

m=`ping6|&wc -c`
false
o=$?
echo ${m:0:o}.${m:o:2}

Перший рядок приймає довжину символу довідкового повідомлення та зберігає його у змінній.

Як і в інших моїх відповідях, наступні рядки отримують номер 1, приймаючи статус виходу false(не дуже портативний, але це все-таки !), А потім використовуйте це значення, щоб вставити десятковий знак в останньому рядку

Вихід: 3.14


Ви, геній, геній
Джошуа

1
Ой, "2,81" на Ubuntu 12,04 (iputils-101006). +1 все одно ;-)
Digital Trauma

@DigitalTrauma згідно зі info ping6мною iputils-121221

також ознайомтесь з моєю chmodзавзятою відповіді на це запитання на codegolf.stackexchange.com/a/25724/16402

2
ще коротше:ping6|&wc -c|sed 's/./&./'
malkaroee

11

Bash + TeX 28 байт

Якщо у вас встановлений TeX:

tex -v|head -c8|cut -d\  -f2

Кількість версій TeX асимптотично наближається до pi в міру удосконалення програмного забезпечення. Тож, з часом, ви можете використовувати цю (невідповідну) реалізацію для друку нових і більше цифр!

tex -v|cut -d\  -f2 | head -n1

Це надруковано 3.1415926 ще у 2011 році; станом на січень 2014 року буде надруковано 3.14159265.


Я люблю цього!
gniourf_gniourf

Ви можете використовувати tex -v|grep -oP '.\..\d'для збереження 4 байти. (Regex викрали з відповіді DigitalTrauma .) У всякому разі, +1, тому що я просто думав про ту саму відповідь.
ace_HongKongIndependence

10

JavaScript, 20 байт

'...'.length+'.'+0xe

Використовуйте його в консолі, щоб результат був надрукований безпосередньо. В іншому випадку alert(...)буде додано ще 7 символів.

Як і моя інша відповідь, я щойно помітив, що це набагато коротше в JS.

Ідея використання 0xeдля 14 береться з подання ОП з доброго дозволу ОП.


1
Його штраф, ви можете використовувати його :)
kukac67

1
Альтернативне 20- (x='.'+0xE).length+x
байтне

@nderscore - це дуже акуратна ідея. Якщо ви опублікуєте це як іншу відповідь, ви отримаєте мій уповок;)
Мартін Ендер

10

Дата GNU, 17 байт

date -d2/5 +%u.%y

Цей гарантовано працює лише цього року, але я не бачу жодних обмежень у правилах щодо цього ;-)

Значення +просто вказує на початок специфікатора формату для, dateа не є арифметичним доповненням. Те ж саме із -зазначенням дати введення.

Вихід:

$ date -d2/5 +%u.%y
3.14
$

only guaranteed to work this yearЧудово .. :)
kukac67

10

Баш, 17 байт

tr 0 .<<<$[62#MC]

Тире, 41 байт

perl -pechomp,s/./$./<<$


..










.

Bash буде голосно скаржитися на пропущений кінцевий маркер, поки Dash цього не зробить, тому для рішення Bash без повідомлень про помилки потрібні будуть два зайвих байти.
Денніс

+1 також. Гадаю, @TheDoctor забув натиснути кнопку оновлення?
Цифрова травма

@DigitalTrauma oops ... виправлено
TheDoctor

7

Баш 23 22

seq 2 .02 5|sed -n 58p

Оболонка (без розширення історії) 20

seq 2 .02 5|sed 58!d

seq 2 .06 5|sed -n 20pтакож працює, як зазначено у відповіді математики ОП.
user80551

sed 58!dтрохи коротше.
Денніс

@Dennis Weird, замінники gnome-терміналів, !dз dpkg ...якими була остання команда, з якої я запускався, з якої починався d. Добре працює, kshале zshкаже, zsh: event not found: dщо, безумовно, щось замінюється.
користувач80551

Це через розширення історії Баша . Він за замовчуванням відключений для сценаріїв, тому якщо ви збережете таку ж команду pi.shі виконаєте bash pi.sh, вона буде добре працювати.
Денніс

6

Python, 39 або 28 47 або 34

(Дякую Score_Under за те, що ви так багато пограли)

print"%s.%s%c"%(len('aaa'),len('a'),52)

+ ось оператор конкатенації рядків, а не додавання.

Скопіюючи 0xeтрюк з ОП, ось 28 символів за допомогою @psal

print('%X.%s'%(675,0xE))[2:]

Старі версії:

print str(len('aaa'))+'.'+str(len('a'))+chr(52)

print str(len('aaa'))+'.'+str(0xe)

print"%s.%s"%(len('aaa'),0xe)

Другий можна скоротити, видаливши пробіл після друку та використовуючи формат "% s" замість str (). cf print"%s.%s"%(len('aaa'),0xe)в 29 байт. Ви можете зробити те ж саме і з першим: print"%s.%s%c"%(len('aaa'),len('a'),52)на 39 байт.
Score_Under

@Score_Under О, я думав, що використовувати %sвсе-таки потрібно str. Дякую за пораду :)
ace_HongKongIndependence

1
ще 29 байт рішення:print('%s,%s'%(0xE9,0xE))[2:]
цибуля

1
... і в 28 байтах:print('%X.%s'%(675,0xE))[2:]
цибуля

5

GolfScript, 8 байт

'??.'(\(

Ця програма містить недруковані символи ASCII, тому її не можна безпосередньо вставити. Натомість знаки запитання у наведеному вище коді повинні бути замінені байтами 03та 0Eшістнадцятковими.

Для зручності ось шістнадцятковий дамп фактичної програми. Користувачі Unix / Linux можуть запустити цей шістнадцятковий дамп xxd -rдля відновлення програми:

0000000: 2703 0e2e 2728 5c28                      '...'(\(

Пояснення:

  • Перші п’ять байтів програми утворюють одноцитований рядковий літерал, що кодує три символи з кодами ASCII 3, 14 та 46 (= період ASCII).

  • (відсікає перший символ з рядка і висуває його ASCII код (3) на стек. \поміняє два верхні пункти на стеку, відтягуючи рядок назад до верху, а другий (відсікає інший символ зі струни, знову натискаючи на ASCII код (14) на стеку.

Наприкінці програми стек (за винятком порожнього рядка введення) тому виглядає приблизно так:

3 "." 14

Наприкінці програми поведінка інтерпретатора GolfScript за замовчуванням полягає в розшаруванні та друкуванні всього на стеку, даючи бажаний вихід.


1
Сніп! У мене була точно така ж ідея , лише 12 годин пізно. Я думаю, я повинен прочитати сторінку 2, перш ніж публікувати ... Ну добре, відкат, +1 для вас.
Денніс

5

баш - 39

Всі ми знаємо, що перші кілька цифр Pi можна обчислити з наступного твердження:

Нехай у мене є велика ємність з кавою

Нам потрібно лише 2 десяткових знаки, правда?

m=May
i=I
h=have
echo ${#m}.${#i}${#h}

4

Математика - 78

DateList["March"<>ToString@FromDigits@"E"]~DateString~{"MonthShort",".","Day"}

В дусі Дня Пі! : D
kukac67

4

Perl, 15 20 байт

print 05706=~s/0/./r
print 0xbc6=~s/0/./r

Хіба PI__ є чимось постійним, пов’язаним із Pi?
Llamageddon

Це не константа. Це два рядки XOR-ed.
nderscore

Побітові оператори заборонені.
kukac67

Ой, їх немає. Ну, там іде моє гіпотетичне рішення. Однак, якщо бітові оператори заборонені, чи можна зробити ще багато іншого, ніж рахувати довжину рядків?
Llamageddon

Є кілька відповідей, в яких використовуються числа в різних базах.
kukac67

4

tr + Баш, 17 байт

tr a-j 0-9<<<d.be

Ці -символи тут не є арифметичними операторами віднімання. Вони вказують дальність.

Вихід:

$ tr a-j 0-9<<<d.be
3.14
$

Розумний, хоча переклад символів - це справді прихована арифметика.
П'єр Арло

@ArlaudPierre Щоправда, хоч я заперечую, що майже всі рішення тут так чи інакше приховують арифметику. Якщо ви подивитесь на фактичні машинні інструкції, виконані для будь-якого з цих відповідей, я б подумав, що всі мають деякі побізні або арифметичні інструкції, заборонені до явного використання питанням.
Цифрова травма

@ArlaudPierre Питання вимагає вивести рядок "3.14". Незалежно від мови, десь під кришкою, це призведе до write()виклику чи подібного. Під кришками обов'язково знайдеться деяка арифметика, щоб забезпечити написання правильної кількості байтів, якщо ніде більше. Я думаю, що питання полягає в тому, щоб приховати необхідні арифметичні / розрядні обчислення.
Цифрова травма

4

БАШ, 57

Це довше, ніж більшість відповідей, але в спробі немає нічого поганого.

f=`echo aaaaaaaaaaaaa|wc -c`;e=`echo aa|wc -c`;echo $e.$f

дає

3.14

3
Вибачте за повторну гольф відповідей усіх: P, таким же чином, як я знайшов:c=wc\ -c;echo `$c<<<..`.`$c<<<''``$c<<<...`
Score_Under

4

С, 36

main(){printf("%d\b.%o\b",' ','`');}

1
Якщо ми поєднаємо це з моєю відповіддю, ми можемо зберегти 2 байти, щоб отримати оцінку 34 :main(){printf("%d\b.%d",' ',0xe);}
vsz

3

JavaScript - 23 байти

atob('Mw')+atob('LjE0')

Завдяки nderscore (див. Його коментарі)!


Ніцца: DI навіть про це не знав
kukac67

Він містить 4хоч;)
nderscore

@nderscore Ах! Ти правий! Було б btoa()працювати, щоб 3.14якось дістатись ?
kukac67

@ kukac67 Набір символів base64 не містить періоду :(
nderscore

3
23-байтна "легальна" версія: atob('Mw')+atob('LjE0')і 14-байтна "незаконна" версія:atob("My4xNA")
nderscore

3

C #

 ((int)'ĺ').ToString("#\\.##");

ĺ - символ 314, а не заздалегідь визначена змінна чи константа. .ToString форматує вихід у цифру, крапку, а потім ще 2 цифри.


Приємно, але в даний час не виходить, і це не комбінується.
Руді Кершо

Console.Write (((int) 'ĺ'). ToString ("# \\. ##"));
Grax32

3

GolfScript, 13 10

{xy}.*'.'\

Дякуємо Ілмарі Каронен за вдосконалену версію!

xі yє символами, що не друкуються (див. http://www.asciitable.com/ для отримання додаткової інформації) відповідно ETXта SO, які декодують до 3 та 14.

Що робить цей код, має бути досить зрозумілим.

Примітка: Наступне правило

You may not use any predefined variables/constants that your language may have as a replacement for 3, 1, and 4. (Author's discretion)

не порушується, оскільки символи ASCII не є ні змінними, ні константами.


The digits 3, 1, and 4 may not appear anywhere in your code.,Your program cannot require input of any kind (besides running it).
користувач80551

Цифри ніде не з’являються. Вхід немає
Вереос

І ваш остаточний код - це ...?
user80551

{}.*.{}.*, а всередині дужок - 2 символи, які не можна надрукувати , відповідно ( asciitable.com ) ETXтаSO
Vereos

2
Ви можете скоротити це до {xy}.*'.'\ (10 знаків). Моя все ж коротша, хоча. ;-) Але +1, щоб навчити мене про { }.*{ }.%), мені доведеться пам’ятати про цю хитрість.
Ільмарі Каронен

3

Новачок на сайті і поки що не можу писати коментарі, тому я опублікую його тут. Просто цікаво про це рішення Javascript:

'...'.length+'.'+0xe

і це правило:

3.14 - це єдине, що ви можете вивести, воно не може бути частиною більш тривалого / великого результату.

Якщо я запускаю цей код у консолі браузера, я отримую:

"3.14"

або за допомогою Node в командному рядку:

'3.14'

але якщо я запускаю цей код:

parseFloat('...'.length+'.'+0xe)

Я отримав:

3.14

Використовуючи Node.js для запуску .js-файлу, я можу написати:

console.log('...'.length+'.'+0xe)

і отримуй:

3.14

1
Ніколи не було обмежень щодо того, яким типом може бути отримане значення. Отже, рядок або число не має значення. Лапки навколо рядка не вважаються частиною виводу.
nderscore

Ласкаво просимо до CodeGolf та головоломки програмування @RobertMunn! Ця відповідь дійсна, оскільки вона підпорядковується всім правилам ... Майте на увазі, що, consoleяк правило, обертати рядки в лапки під час їх відображення ... Ви використовували, +але не арифметично, він використовується як конкатенатор, так що це справедливо ... Також ти міг би зробити це меншим за допомогою, alertа не console.log... Але в іншому випадку, великі зусилля. Ми сподіваємось, що вам тут сподобається ...
WallyWest

Це дуже приємно! Вам слід подумати про те, щоб додати назву мови та кількість байтів (наприклад, Javascript, 20)
Vereos

1
Спасибі Ейс, я просто тут вивчаю правила. Я не міг залишити коментар, тому я розмістив окремо, я вважаю, що це було більше роз'ясненням щодо правил правила публікації, які nderscore і WallyWest уточнили для мене. Я ціную терпіння кожного з новонародженим.
Роберт Манн

2

Математика, 56 байт

(l=ToString@StringLength@#&)@"..."<>"."<>l@"."<>l@"...."

Мало що сказати. Я генерую цифри як довжини рядків і з'єдную їх.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.