14 3/14 के लिए दिन की पहेली


62

xkcd π कॉमिक

हैप्पी π डे। इस प्रश्न का लक्ष्य त्रिज्या 3 के सर्कल के लिए क्षेत्र की गणना करना है, जहां ए = ²r²।

पकड़ यह है कि आपको निरंतर is का उपयोग करना होगा जिसे आप जिस प्रोग्रामिंग में देख रहे हैं, उससे भिन्न भाषा में परिभाषित किया गया है। उदाहरण के लिए, आप एक सी प्रोग्राम लिख सकते हैं जो फोरट्रान का उपयोग करता है MATH::PI, या एक पायथन प्रोग्राम जो जावा का उपयोग करता है java.lang.Math.PI

नियम:

  • आपके कोड को गणना के लिए एक अलग भाषा से code के एक संग्रहीत मूल्य का उपयोग करना चाहिए। (अर्थात इसे निरंतर या गणित पुस्तकालय में संग्रहित किया जाना चाहिए।)
  • आपके प्रोग्राम के सभी कोड एक ही फ़ाइल में फिट होने चाहिए। उदाहरण के लिए, आप C को, प्रिंट करने के लिए C में एक प्रोग्राम नहीं लिख सकते, फिर C प्रोग्राम को चलाने के लिए जावा में एक और। (हालांकि, आप एक जावा प्रोग्राम लिख सकते हैं जो स्वयं एक सी प्रोग्राम लिखते और संकलित करता है।)
  • आप वेबपृष्ठ से You डाउनलोड नहीं कर सकते हैं और दावा करते हैं कि आपका स्थिरांक PHP / ASP / HTML से आया है।

यहाँ एक उदाहरण है जो बैश में चलता है, और पायथन के संग्रहीत math.piमूल्य का उपयोग करता है :

#!/bin/bash
PI=`python -c 'import math; print math.pi'`
bc -l <<< "3 * 3 * $PI"

आउटपुट:

28.27433388231

यह एक लोकप्रियता प्रतियोगिता है, इसलिए एक सप्ताह के बाद सबसे अधिक वोटों के साथ प्रवेश जीतता है।

संपादित करें: एक सप्ताह के बाद, पुरस्कार 93 अंकों के साथ DigitalTrauma को जाता है। भयानक कोडांतरक टिप के लिए धन्यवाद - मुझे नहीं पता था कि FPU हार्डवेयर में स्थिर संग्रहीत है। मुझे उम्मीद थी कि यह प्रतियोगिता घड़ी चक्र को दूर फेंकने के लिए मजेदार तरीके खोजने के बारे में होगी, लेकिन यह वास्तव में कुछ बचा सकता है।

* की छवि शिष्टाचार: http://xkcd.com/10/


38
यह 14 वें महीने का तीसरा दिन है ?? मेरा कैलेंडर तोड़ा जाना चाहिए।
गारेथ

30
अगले साल: 9/26 और 53 के दिन 3/14/15, मैं एक चुनौती पोस्ट
करूंगा

5
ओह। ताऊ बेहतर है। और इस।
bjb568 1

3
@bjb मैं सहमत हूँ, ताऊ अधिक समझ में आता है, लेकिन इसका मतलब यह नहीं है कि हम मध्य मार्च में थोड़ा मज़ा नहीं कर सकते। :)
भूमिगत

9
कितना पेचीदा है।
T

जवाबों:


128

सी + x86 विधानसभा

अपनी भाषा के सॉफ्टवेयर में परिभाषित एक निरंतरता से संतुष्ट नहीं हैं? ऐसी भाषा का उपयोग क्यों न करें जो आपके FPU हार्डवेयर से PI के निरंतर मान तक पहुँच सकती है:

#include <stdio.h>

int main (int argc, char **argv) {
    double pi;
    __asm__("fldpi" : "=t" (pi));
    printf("%g\n", 3 * 3 * pi);
    return (0);
}

67
पवित्र बकवास, वहाँ सिर्फ पी के मूल्य को लोड करने के लिए एक निर्देश है।
user2357112

21
x86 में हर किसी के लिए निर्देश हैं।
शराबी


7
7 स्थिरांक के लिए अच्छा विकल्प, भी! मैं हमेशा log_e (2) का उपयोग कर रहा हूं, लेकिन नहीं, कहते हैं, 2.
टिम एस।

3
@fluffy मेरी x86 कोर टूटी हुई है: मैंने MOV AX, c0ffe की कोशिश की; ADD MILK; चीनी डालें; चीनी डालें; MOV Ecx, c0ffe; MOV ebx, 1; MOV eax, 4 और मेरे बायोस स्पीकर मुझ पर हँसे .....
GMasucci

77

पायथन, बैश, सी, जे, पीएचपी और पायथन 3

import subprocess

p = subprocess.Popen("""
echo '
#define _USE_MATH_DEFINES
#include <stdio.h>
#include <math.h>

int main(int pi) {
    if (pi == 1) printf("%.5f", M_PI);
    if (pi == 2) printf("o. 1");
    if (pi == 3) printf("<?php printf(\\"%%.5f\\", pi()); ?>");
    if (pi == 4) printf("import math; print(\\" %%.5f\\" %% math.pi)");
    return 0;
}
' > gcc -o pi
./pi
./pi J | jc
./pi and PHP | php
./pi and Python 3 | python3
""", shell=True, stdout=subprocess.PIPE)

values_of_pi = map(float, map(str.strip, p.stdout.read().split()))
pi = max(values_of_pi, key=values_of_pi.count)

print pi * 3 * 3

बस सुरक्षित होने के लिए, यह कार्यक्रम कुछ अलग भाषाओं से पाई को पुनः प्राप्त करता है, जो सबसे अधिक सहमत मूल्य पर ले जाता है। अधिक विश्वसनीयता के लिए अधिक भाषाओं को आसानी से जोड़ा जा सकता है।


27
मैंने बस थोड़ा सा मुँह में डाला।
दान एस्पारज़ा

J क्या है और आप इसके साथ अपना C प्रोग्राम क्यों चला रहे हैं?
NoBugs

@NoBugs J एक और भाषा है, और मैं इसे jcअपने C प्रोग्राम ( o. 1) के आउटपुट के साथ पी के एक और मान प्राप्त करने के लिए (अपने कंप्यूटर पर J कंसोल हूं) चला रहा हूं । तर्क महत्वपूर्ण नहीं हैं।
जीआर

1
echo $long_string > gcc -o pi? मैं विश्वास नहीं कर सकता कि किसी ने भी इसे नहीं पकड़ा। इसके अलावा, क्या आपने यहाँ-डॉक्स के बारे में सुना है?
ब्लैकलाइट शाइनिंग

यह मेरे द्वारा देखे गए कोड के सबसे अच्छे टुकड़ों में से एक है। मैं इसे फ्रेम करके अपनी दीवार पर लगाने जा रहा हूं। संभवतः एक चेतावनी के साथ।
केविन

41

PHP / MySQL

$link = mysqli_connect("localhost", "user", "password", "dbname");
$query = mysqli_query($link, 'SELECT PI() AS pi');
$row = mysqli_fetch_assoc($query);
echo 3*3*$row['pi'];

4
बहुत चालाक। विभिन्न रनटाइम्स को नियंत्रित करने के एक बहुत ही मानक तरीके का उपयोग करना। =) +1
jpmc26

34

C, पास्कल, जावा, जावास्क्रिप्ट, LaTeX3, प्रोलॉग, पर्ल, स्कीम, लुआ, पायथन, TeX / PGF के साथ पर्ल / टीके

निम्न पर्ल स्क्रिप्ट एक विंडो प्रदर्शित करती है जो the और परिकलित क्षेत्र के मूल्यों को सूचीबद्ध करती है। Of का मूल्य विभिन्न भाषाओं से लिया गया है जैसा कि नीचे दिखाया गया है।

नतीजा

एक-फाइल स्क्रिप्ट:

#!/usr/bin/env perl
use strict;
$^W=1;

use Tk;
use Tk::Font;
use Tk::HList;
use Tk::ItemStyle;
use Tk::PNG;

# Function to calculate the area of the circle with radius 3
sub A ($) {
    use bignum;
    return 9*$_[0];
}

my $title = 'Pi Day';

# Configuration of external program names
my %prg = qw[
    Pascal fpc
    Perl perl
    Prolog swipl
    Scheme guile1
    TeX  tex
    LaTeX latex
];
sub prg ($) {
    my $prg = shift;
    return $prg{$prg} // $prg;
}

# Column headers
my @header = (
    '',
    'Language',
    "\N{U+03C0}",
    "A(3) = A(r) = \N{U+03C0}\N{U+2009}r\N{U+00B2}",
);

my $mw = MainWindow->new(
    -title => $title,
);

# Font setup (larger font)
my $font_size = '22';
my $font = $mw->Font();
$font->configure(-size => $font_size);

# ---------
# Utilities
# ---------

# Run program in backticks, quote arguments if needed and some error checking
sub backticks_pi (@) {
    my @cmd = map{/[ ()$;<>|\x22]/ && length > 1 ? "'$_'" : $_} @_;
    print "[@cmd]\n";
    my $catch = `@cmd`;
    if ($? == -1) {
        warn "Failed to execute: $!\n";
    }
    elsif ($? & 127) {
        warn sprintf "Child died with signal %d!\n", $? & 127;
    }
    elsif ($?) {
        warn sprintf "Child exited with value %d!\n", $? >> 8;
    }
    else {
        return $1 if $catch =~ /^\s*(\d+\.\d+)\s*$/
                  or $catch =~ /\bpi\s*=\s*(\d+\.\d+)/;
    }
    warn "Could not find pi in the output of \"@cmd\"!\n";
    return 0;
}

# Run a program with error checking
sub run_cmd (@) {
    print "[@_]\n";
    system @_;
    if ($? == -1) {
        warn "Failed to execute: $!\n";
    }
    elsif ($? & 127) {
        warn sprintf "Child died with signal %d!\n", $? & 127;
    }
    elsif ($?) {
        warn sprintf "Child exited with value %d!\n", $? >> 8;
    }
    else {
        return $1;
    }
    return undef;
}

# Create a bitmap logo
sub make_logo ($$$@) {
    my $name = shift;
    my $logo = shift;
    my $contents = shift;
    my $file = "piday-logo-$name.tmp";
    if ($contents) {
        open(OUT, '>', $file) or die "!!! Error: Cannot write `$file': $!";
        print OUT $contents;
        close(OUT);
    }
    foreach (@_) {
        run_cmd @$_;
    }
    return $mw->Photo(
        -file => $logo,
    ) if -f $logo;
    return undef;
}

# Call foreign language to calculate pi
sub make_pi ($$@) {
    my $file = shift;
    my $source = shift;
    if ($source) {
        open(OUT, '>', $file) or die "!!! Error: Cannot write `$file': $!";
        print OUT $source;
        close(OUT);
    }
    my $cmd_last = pop;
    foreach (@_) {
        run_cmd @$_;
    }
    return backticks_pi @$cmd_last;
}

# Add result list table
my $h = $mw->HList(
    -header  => 1,
    -columns => scalar @header,
    -width   => 100,
    -height  => 20,
    -font    => $font,
)->pack(
  -expand => 1,
  -fill => 'both',
);

# Add header for the result list table
for (0 .. @header-1) {
    $h->header('create', $_,
        -text => $header[$_],
    );
}

# Exit button
my $quit = $mw->Button(
    -text => 'Quit',
    -command => sub {exit},
    -font => $font,
)->pack;


my @list;
my @cmd;
my $pi;
my $source;
my $img;

# GNU C
# -----

$img = make_logo(
    'C',
    'piday-logo-c.png',
    '',
    [
        prg('wget'),
        '-O', 'piday-logo-c-gccegg.png',
        'http://gcc.gnu.org/img/gccegg-65.png',
    ],
    [
        prg('convert'),
        '-scale', '54x64',
        'piday-logo-c-gccegg.png',
        'piday-logo-c.png',
    ],
);

$source = <<'END_SOURCE';
#define _GNU_SOURCE
#include <math.h>
#include <stdio.h>

#define xstr(s) str(s)
#define str(s) #s

int main() {
  long double pi = M_PI;
  printf("pi=%s", xstr(M_PIl));
  return 0;
}
END_SOURCE

$pi = make_pi(
    'piday-c.c',
    $source,
    [
        prg('gcc'),
        '-o', 'piday-c',
        'piday-c.c',
    ],
    [
        prg('./piday-c')
    ],
);

push @list, {
    language => 'GNU C',
    pi       => $pi,
    image    => $img,
};

# Java
# ----

$img = make_logo(
    'Java',
    'piday-java.png',
    '',
    [
        prg('wget'),
        '-O', 'piday-java.svg',
        'https://upload.wikimedia.org/wikipedia/commons/a/a4/Java_logo_and_wordmark.svg',
    ],
    [
        prg('convert'),
        '-scale', '35x64',
        'piday-java.svg',
        'piday-java.png',
    ],
);

$source = <<'END_SOURCE';
public class PiDayJava {
    public static void main(String args[]) {
        System.out.println(Math.PI);
    }
}
END_SOURCE

$pi = make_pi(
    'PiDayJava.java',
    $source,
    [
        prg('javac'),
        'PiDayJava.java',
    ],
    [
        prg('java'),
        'PiDayJava',
    ],
);
push @list, {
    language => 'Java',
    pi       => $pi,
    image    => $img,
};

# Perl
# ----

# Math/Complex.pm: sub pi () { 4 * CORE::atan2(1, 1) }
@cmd = (prg('Perl'), '-e', 'use Math::Complex; print pi');
$pi = backticks_pi @cmd;

my $img = Tk->findINC('Camel.xpm');
$img = $mw->Photo(
    -file => $img,
);

push @list, {
    language => 'Perl',
    pi => $pi,
    image => $img,
};

# Python
# ------

@cmd = (
    prg('echo'),
    'import math;print math.pi',
    '|',
    prg('python'),
);
$pi = backticks_pi @cmd;

$img = make_logo(
    'python',
    'piday-logo-python.png',
    '',
    [
        prg('wget'),
        '-O',
        'piday-logo-python-master.png',
        'http://www.python.org/static/community_logos/python-logo-master-v3-TM.png',
    ],
    [
        prg('convert'),
        '-crop', '111x111+79+33',
        'piday-logo-python-master.png',
        'piday-logo-python-crop.png'
    ],
    [
        prg('convert'),
        '-scale', '64x64',
        'piday-logo-python-crop.png',
        'piday-logo-python.png',
    ],
);

push @list, {
    language => 'Python',
    pi => $pi,
    image => $img,
};

# TeX
# ---

@cmd = (
    prg('TeX'),
    '\input pgf \pgfmathparse{pi}\message{pi=\pgfmathresult}\end',
);
$pi = backticks_pi @cmd;
my $img = make_logo(
    'tex',
    'piday-logo-tex.png',
    '',
    [
        prg('pdftex'),
        '\mag=4000 \nopagenumbers\font\sc=cmcsc10 \sc pgf\bye'
    ],
    [
        prg('pdfcrop'),
        'texput.pdf',
        'piday-logo-tex.pdf',
    ],
    [
        prg('convert'),
        'piday-logo-tex.pdf',
        'piday-logo-tex.png',
    ]
);
push @list, {
    language => 'TeX/PGF',
    pi => $pi,
    image => $img,
};

# LaTeX3
# ------

my $logo_source = <<'END_LOGO';
\mag=4000
\documentclass{article}
\usepackage{hologo}
\pagestyle{empty}
\begin{document}
\hologo{LaTeX3}
\end{document}
END_LOGO

$img = make_logo(
    'latex3',
    'piday-logo-latex3.png',
    $logo_source,
    [
        prg('pdflatex'),
        'piday-logo-latex3.tmp'
    ],
    [
        prg('pdfcrop'),
        'piday-logo-latex3.pdf',
        'piday-logo-latex3-crop.pdf',
    ],
    [
        prg('convert'),
        'piday-logo-latex3-crop.pdf',
        'piday-logo-latex3.png',
    ]
);
$source = <<'END_LATEX3';
\documentclass{article}
\usepackage{expl3}
\ExplSyntaxOn
\msg_term:n { pi=\fp_eval:n { pi } }
\ExplSyntaxOff
\stop
END_LATEX3
$pi = make_pi(
    'piday-latex3.tex',
    $source,
    [
        prg('LaTeX'),
        'piday-latex3.tex',
    ],
);
push @list, {
    language => 'LaTeX3',
    pi => $pi,
    image => $img,
};

print "****************\n";

# Lua
# ---

$img = make_logo(
    'Lua',
    'piday-logo-lua.png',
    '',
    [
        prg('wget'),
        '-O', 'piday-logo-lua.gif',
        'http://www.lua.org/images/lua-logo.gif',
    ],
    [
        prg('convert'),
        '-scale', '64x64', # '50x50',
        'piday-logo-lua.gif',
        'piday-logo-lua.png',
    ],
);

$source = 'print(math.pi)';
$pi = make_pi(
    'piday-lua.lua',
    $source,
    [
        prg('texlua'),
        'piday-lua.lua',
    ]
);
push @list, {
    language => 'Lua',
    pi => $pi,
    image => $img,
};

# JavaScript
# ----------

$img = make_logo(
    'JavaScript',
    'piday-logo-javascript.png',
    '',
    [
        prg('wget'),
        '-O', 'piday-logo-rhino.jpg',
        'https://developer.mozilla.org/@api/deki/files/832/=Rhino.jpg',
    ],
    [
        prg('convert'),
        '-scale', '127x64',
        'piday-logo-rhino.jpg',
        'piday-logo-javascript.png',
    ],
);

$source = 'print(Math.PI)';
$pi = backticks_pi(
    prg('java'),
    '-cp', prg('js.jar'),
    'org.mozilla.javascript.tools.shell.Main',
    '-e', $source,
);
push @list, {
    language => 'JavaScript',
    pi => $pi,
    image => $img,
};

# Scheme
# ------

$img = make_logo(
    'Scheme',
    'piday-logo-scheme.png',
    '',
    [
        prg('wget'),
        '-O', 'piday-logo-lambda.svg',
        'https://upload.wikimedia.org/wikipedia/commons/3/39/Lambda_lc.svg',
    ],
    [
        prg('convert'),
        '-scale', '64x64',
        'piday-logo-lambda.svg',
        'piday-logo-scheme.png',
    ],
);
$source = '(display (* 2 (acos 0)))';
$pi = backticks_pi(
    prg('Scheme'),
    '-c', $source,
);
push @list, {
    language => 'Scheme',
    pi => $pi,
    image => $img,
};

# Prolog
# ------

$img = make_logo(
    'Prolog',
    'piday-logo-prolog.png',
    '',
    [
        prg('wget'),
        '-O', 'piday-logo-swipl.png',
        'http://www.swi-prolog.org/icons/swipl.png',
    ],
    [
        prg('convert'),
        '-scale', '78x64',
        'piday-logo-swipl.png',
        'piday-logo-prolog.png',
    ],
);
$source = ":- format('~15f~n', [pi]).\n";
$pi = make_pi(
    'piday-prolog.pro',
    $source,
    [
        prg('Prolog'),
        '-c', 'piday-prolog.pro',
    ]
);
push @list, {
    language => 'Prolog',
    pi => $pi,
    image => $img,
};

# Pascal
# ------

$img = make_logo(
    'Pascal',
    'piday-logo-pascal.gif',
    '',
    [
        prg('wget'),
        '-O', 'piday-logo-pascal.gif',
        'http://www.freepascal.org/pic/logo.gif',
    ]
);
$source = <<'END_PASCAL';
program piday_pascal;

uses sysutils, math;

begin
  writeln(format('%.16f', [pi]));
end.
END_PASCAL
$pi = make_pi(
    'piday-pascal.pas',
    $source,
    [
        prg('Pascal'),
        'piday-pascal.pas',
    ],
    [
        prg('./piday-pascal'),
    ]
);
push @list, {
    language => 'Pascal',
    pi => $pi,
    image => $img,
};

# Sort and fill the table rows
@list = sort {
    my $diff = (length $b->{'pi'} <=> length $a->{'pi'});
    return $diff if $diff;
    return "\L$a->{'language'}\E" cmp "\L$b->{'language'}\E";
} @list;

foreach my $x (@list) {
    my $e = $h->addchild("");
    my $col = 0;
    if ($x->{'image'}) {
        $h->itemCreate($e, $col++,
            -itemtype => 'image',
            -image => $x->{'image'},
        );
    }
    else {
        $col++;
    }
    $h->itemCreate($e, $col++,
        -itemtype => 'text',
        -text => $x->{'language'},
    );
    $h->itemCreate($e, $col++,
        -itemtype => 'text',
        -text => $x->{'pi'},
    );
    $h->itemCreate($e, $col++,
        -itemtype => 'text',
        -text => A $x->{'pi'},
    );
}

MainLoop;

__END__

बोली

निम्न सूची उन भाषाओं और कोड को दिखाती है जिनका उपयोग π करने के लिए किया जाता है।

  • GNU C: GNU एक्सटेंशन का उपयोग π की उच्च परिशुद्धता प्राप्त करने के लिए किया जाता है।

    #define _GNU_SOURCE
    #include <math.h>
    #include <stdio.h>
    
    #define xstr(s) str(s)
    #define str(s) #s
    
    int main() {
        long double pi = M_PI;
        printf("pi=%s", xstr(M_PIl));
        return 0;
    }
  • पास्कल: फ्री पास्कल के साथ संकलित ।

    program piday_pascal;
    
    uses sysutils, math;
    
    begin
      writeln(format('%.16f', [pi]));
    end.
  • जावा:

    public class PiDayJava {
        public static void main(String args[]) {
            System.out.println(Math.PI);
        }
    }
    
  • जावास्क्रिप्ट: राइनो का उपयोग जावास्क्रिप्ट को निष्पादित करने के लिए किया जाता है।

    print(Math.PI)
  • LaTeX3:

    \documentclass{article}
    \usepackage{expl3}
    \ExplSyntaxOn
    \msg_term:n { pi=\fp_eval:n { pi } }
    \ExplSyntaxOff
    \stop
  • प्रोलॉग: एसडब्ल्यूआई प्रोलॉग का उपयोग प्रोलॉग कंपाइलर के रूप में किया जाता है।

    :- format('~15f~n', [pi]).
  • पर्ल: मज़ा और पूर्णता के लिए।

    use Math::Complex;
    print pi;
  • योजना: उपयोग योजना कार्यान्वयन GNU Guile है

    (display (* 2 (acos 0)))
  • Lua: texlua Lua दुभाषिया के रूप में प्रयोग किया जाता है।

    print(math.pi)
  • अजगर:

    import math
    print math.pi
  • TeX / PGF: p पैकेज पीजीएफ की अपनी परिभाषा से लिया गया है और सादा TeX का उपयोग TeX प्रारूप के रूप में किया जाता है:

    \input pgf
    \pgfmathparse{pi}
    \message{pi=\pgfmathresult}
    \end

16

डीजी

print ((import '/math/pi')*3**2)

यह काम किस प्रकार करता है:

dg एक भाषा है जो CPython bytecode के लिए संकलित है। आसानी से, यह अजगर पुस्तकालयों के साथ संगत है। importdg में कथन वे आयात की गई वस्तु को वापस करते हैं, इसलिए यह प्रोग्राम मूल रूप से ऐसा करता है:

print (<PYTHON'S MATH.PI>*3**2)

 

 

नहीं, मैं किसी भी upvotes की उम्मीद नहीं करता। :)


4
उफ़्फ़ डेज़ी, मुझे लगता है कि मैंने उत्थान किया;)
अनाम पी

1
वैसे, यह पहली चीज है जो मैंने कभी dg में की थी। किसी और ने इसे एक गोल्फ प्रश्न के लिए इस्तेमाल किया और उसी जगह से जुड़ा हुआ है जिसे मैंने इस उत्तर में जोड़ा था। मैंने इसे पढ़ा और सोचा कि भाषा साफ-सुथरी दिखती है (इस तथ्य के बावजूद कि मैं डॉगी मेम को तुच्छ समझता हूं) लेकिन इसके बारे में जानने के लगभग एक घंटे बाद तक इसका उपयोग करने की योजना नहीं बनाई थी, जब मैंने इस प्रश्न को पढ़ा और महसूस किया कि मैं इसका दुरुपयोग कर सकता हूं।
अंडरग्राउंडोरेल

5 घंटे पहले, जब मैंने अपनी पहली टिप्पणी पोस्ट की, तो इसमें 1 अपवोट था। मुझे लगता है कि लोगों ने मेरी टिप्पणी को गंभीरता से लिया;) या उन्होंने सिर्फ तुम्हारा इस्तेमाल किया।
अनाम पीए

"सभी कोड एक ही पंक्ति में फिट होने चाहिए"। कम से कम कुछ लोग पढ़ सकते हैं!
फ्लोरिस

<PYTHON'S MATH.PI>वे repr()तार जो आपको फ़ंक्शंस और अन्य ऑब्जेक्ट्स के लिए मिलते हैं जो अपने __repr__()स्वयं के वैध पुनर्निर्माणों को परिभाषित नहीं कर सकते हैं वास्तव में ... अच्छी तरह से ... मान्य नहीं हैं। कोशिश करो __import__('math').pi
ब्लैकलाइट शाइनिंग

15

सी ++ और लुआ 5.2

कुछ भी नहीं कहते हैं कि पीआई निरंतर का उपयोग करने के लिए एक पूरी भाषा दुभाषिए को एम्बेड करना काफी पसंद है।

#include <lua.hpp>
#include <cmath>
#include <iostream>

#define R 3

int main( void )
{
    lua_State* vm = luaL_newstate();

    luaL_openlibs( vm );
    luaL_dostring( vm, "function get_pi() return math.pi end" );
    lua_getglobal( vm, "get_pi" );
    lua_call( vm, 0, 1 );

    lua_Number PI_ = lua_tonumber( vm, -1 );

    std::cout << PI_ * pow( R, 2 ) << std::endl;

    lua_close( vm );
    return 0;
}

बस हो सकता है ...lua_getglobal("math");lua_getfield(-1,"pi");
mniip

@ मुन्नीप को एहसास हुआ कि मैंने पोस्ट किया है। यह सुबह हो चुकी है और मेरा दिमाग अभी पूरी तरह से चालू नहीं हुआ है, लेकिन यह तरीका ठीक वैसे ही काम करता है इसलिए मैंने इसे अकेला छोड़ दिया।
टोनी एलिस

13

bash + PHP + bc

एक काफी सरल वन-लाइनर:

echo "scale=14;3*3*`php -r 'echo pi();'`"|bc

आउटपुट:

28.274333882308

"सभी कोड एक ही पंक्ति में फिट होने चाहिए"। कम से कम कुछ लोग पढ़ सकते हैं!
फ्लोरिस

4
@ फ़्लोरिस: आप इसे तोड़ने के लिए नफरत करते हैं, लेकिन सवाल फ़ाइल कहता है , लाइन नहीं ।
डेनिस

26
@ डेनिस - जाहिर है मैं "कुछ लोग" नहीं हूँ ...: - /
फ्लोरिस

10

MATLAB + जावा (21 बाइट्स)

निश्चित नहीं है कि MATLAB धोखा दे रहा है, लेकिन यहां हम जाते हैं

java.lang.Math.PI*3^2

आउटपुट: Format Short

28.2743

आउटपुट: Format Long

28.2743338823081

स्वरूपण प्रकार संग्रहीत मूल्य को प्रभावित नहीं करता है, यह केवल यह बताता है कि यह कंसोल में कैसे प्रिंट किया गया है


1
MATLAB .. - shudders -
theGreenCabbage

@TheGreenCabbage हाहा, यकीन नहीं होता कि अगर वह एक अच्छा कंपकंपी या एक बुरा है :) मेरे अनुभव में इसने सरल चीजों को लिखना बहुत आसान बना दिया है। बेशक बेहतर विकल्प हैं, लेकिन अगर बहुत समय नहीं है, तो MATLAB चाल चलता है।
MZimmerman6

10

बैश, नोड, रूबी, पायथन

#!/bin/bash

node -pe 'Math.PI' \
| ruby -e 'puts ARGF.read.to_f * 3' \
| python -c 'import sys; print(float(sys.stdin.read()) * 3)'

7

पर्ल

perl -ne '/M_PI\s*([\d.]*)/&&print $1*3*3' < /usr/include/math.h

+1, भले ही यह वास्तव में OS X में काम नहीं करता है (math.h में architecture/*/math.hलक्ष्य प्लेटफॉर्म के आधार पर अन्य फाइलें शामिल हैं )
स्क्विश ossifrage

1
वैसे यह विंडोज पर भी काम नहीं करता है, लेकिन मैं यहां पोर्टेबिलिटी के लिए नहीं जा रहा हूं :)
ओरियन

7

Powershell + MS SQL Server

यहाँ Powershell और SQL सर्वर के लिए एक (2005 से ऊपर) है

add-pssnapin sqlserverprovidersnapin100
add-pssnapin sqlservercmdletsnapin100
$pi=Invoke-Sqlcmd -query "select PI() as sql"
$pi.sql *3*3

और यहाँ एक एकल लाइनर के रूप में:

add-pssnapin sqlserverprovidersnapin100;add-pssnapin sqlservercmdletsnapin100;(Invoke-Sqlcmd -query "select PI() as sql").sql*3*3

बाद में कुछ और पोस्ट करेंगे :)


7

जावास्क्रिप्ट / पीएचपी

एक * .php फ़ाइल के रूप में सहेजा जाना चाहिए और कुछ सर्वर से एक ब्राउज़र में कॉल किया जाना चाहिए जो PHP की व्याख्या करता है।

<script type="text/javascript">
    alert(3*3*<?php echo M_PI;?>);
</script>

छोटे टैग का उपयोग करके और 9 के साथ 3 * 3 को प्रतिस्थापित करके गोल्फ किया जा सकता है (क्या इसकी अनुमति है?)

<script type="text/javascript">
    alert(9*<?=M_PI?>);
</script>

pi () की लंबाई M_PI जितनी है, इसलिए कोई विजेता नहीं है।


2
"यह अनुमति है" - निश्चित रूप से, यह कोड गोल्फ नहीं बल्कि लोकप्रियता प्रतियोगिता है।
कंपूचिप

1
हालांकि यह न तो php और न ही जावास्क्रिप्ट में चलेगा।
Cthulhu

हाँ, इसे कुछ <script>टैग और .php एक्सटेंशन की आवश्यकता है।
कॉम्पिटिशन

3
मैंने इसे संपादित किया, हालांकि मुझे लगता है कि यह पर्याप्त रूप से समझ में आता था ...
रेएनो

@Cthulhu "को * .php फ़ाइल के रूप में सहेजा जाना चाहिए और कुछ सर्वर से एक ब्राउज़र में कॉल किया जाना चाहिए जो PHP की व्याख्या करता है।" शुद्ध .html या .php या .what फ़ाइलों का उपयोग करने से काम नहीं चलेगा, आपको अपाचे या ऐसा कुछ चाहिए।
अनाम पीए

6

Emacs लिस्प: लेखन, संकलन, और सी चल रहा है

(with-temp-buffer
  (with-temp-file"/#rad.c"(insert"#include<math.h>\n#include<stdio.h>\nint main(void){printf(\"%f\",M_PI*3*3);}"))
  (shell-command"gcc /#rad.c -o /#rad && /#rad"(current-buffer))(string-to-number(buffer-string)))

ungolfed

(with-temp-buffer
  (with-temp-file "/#rad.c"
    (insert"
#include<math.h>
#include<stdio.h>
int main(void){
  printf(\"%f\",M_PI*3*3);
}"))
  (shell-command "gcc /#rad.c -o /#rad && /#rad"
         (current-buffer))
  (string-to-number(buffer-string)))

बोनस:

आप बैच का उपयोग करके इस भाषा को ट्रिपल बना सकते हैं -वैल का उपयोग करके और अभिव्यक्ति में आस-पास (print)। इससे बैश रनिंग लिस्प हो जाता है जो कम्पाइल लिखता है और सी रन करता है आउटपुट को पढ़ता है और इसे आपके बैश में शेल तक प्रिंट करता है।


5

इस सवाल के लिए, मैंने अपनी भाषा बनाई, जिसे अंक कहा जाता है। वाक्यविन्यास में p, एक निरंतर निरूपण pi और अंक होते हैं। जब चलाया जाता है, तो यह सभी अंकों (और पी) को एक साथ गुणा करता है। यहाँ मेरा दुभाषिया और कोड है, जिसे पायथन में लिखा गया है:

def interpret(kode):
    out=1.0
    for i in kode:
        if(i=='p'):
            out*=3.14159265
        else:
            out*=int(i)
    return out
print(interpret("p33"))

3
एक भाषा की तुलना में पायथन में एक फ़ंक्शन की तरह मुझे अधिक लगता है, लेकिन यह काम करता है।
होसच

2
@ hosch250 अजगर दुभाषिया स्वयं C (CPython के मामले में) में लिखा गया एक फ़ंक्शन है (इसलिए यह उत्तर बहुत मान्य है)। काफी चतुर मैं कहूँगा।
जुआन कैम्पा

4

bc + dc + bash (गोल्फर्स के लिए 30 चार्ट)

यहाँ एक छोटा गोल्फ है:

$ dc<<<"3d*`bc -l<<<'a(1)*4'`*p"
28.27433388230813914596
$ 
  • bc -l<<<'a(1)*4' पीआई का उत्पादन करता है (यह एक () (आर्कटैन) फ़ंक्शन के लिए बीसी गणित में एक स्थिर के रूप में संग्रहीत किया जाता है।
  • dc<<<"3d*पीआई *p"स्टैक को 3 धक्का देता है, स्टैक के शीर्ष पर मूल्य को दोहराता है (3) और गुणक, फिर स्टैक के लिए पीआई को धक्का देता है और फिर स्टैक के शीर्ष को प्रिंट करता है।

4

OCaml + awk

कोई भी OCaml पसंद करता है?

  • पाई की गणना करने के लिए OCaml का उपयोग करें
  • awkपी * आर 2 की गणना करने के लिए

यह रहा:

ocaml <<< "4.0 *. atan 1.0;;" | awk '/float/{printf("%.12f", 3*3*$NF)}'

उत्तर है:

28.274333882308

4

सी ++ / सी

#include <math.h>
#include <iostream>

int main(int argc, char** argv) {
    std::cout << 3*3*M_PI << std::endl;
    return 0;
}

साइट पर आपका स्वागत है! लेकिन मुझे लगता है कि सवाल एक ऐसे कार्यक्रम की तलाश में है जो वास्तव में एक फ़ंक्शन को कॉल करता है या किसी अन्य भाषा में एक कार्यक्रम को संकलित करता है, न कि केवल एक से अधिक भाषा में संकलन करेगा
जोनाथन वान मैट्रे

4
@JonathanVanMatre: मुझे लगता है कि इस मामले में उनका मतलब था कि वह C हैडर से C ++ में निरंतर उपयोग करता है। std::coutकभी भी एक मान्य C सिंटैक्स नहीं था।
कोनराड बोरोस्की

आह, वहाँ अच्छा फोन।
जोनाथन वान मैट्रे

4

बहुत ही सरल, C गणित पुस्तकालय तक पहुँचने के लिए बैश का उपयोग करता है:

bc -l <<< "3 * 3 * `grep -w M_PI /usr/include/math.h | awk '{ print $4 }'`"


4

चूँकि फोरट्रान का वास्तव में पीआई के लिए एक आंतरिक मूल्य नहीं है (जो कि ओपी था, "फोरट्रान के MATH::PI" कथन के साथ इंगित करता है ), मुझे सी के लिए एक लिखना था। मैंने वास्तव में इसे परिभाषित करने के बजाय इसे चुना, जो मैं अभी निर्धारित करूंगा। यह कुछ तेज एल्गोरिथ्म का उपयोग कर रहा है :

#include <math.h>
double pi_eval(){
    double a = 1.0;
    double b = 1.0/sqrt(2.0);
    double t = 0.25;
    double x = 1.0;
    double y;
    int i;

    for(i=0; i<4; i++){
        y = a;
        a = 0.5*(a+b);
        b = sqrt(b*y);
        t -= x*(y-a)*(y-a);
        x *= 2.0;
    }
    return (a+b)*(a+b)/(4.0*t);
}

(के रूप में बचाया pi_calc.c) जो तब में प्रयोग किया जाता है area_calc.f90:

program area_calc
   use, intrinsic :: iso_c_binding
   implicit none

   interface
     function pi_eval() bind(c)
       use, intrinsic :: iso_c_binding
       real(c_double) :: pi_eval
     end function pi_eval
   end interface
   real(c_double) :: pi, area

   pi = pi_eval()
   print *,"area=",3.0*3.0*pi

end program area_calc

यह आवश्यक उत्पादन करता है

 area=   28.2743338823081

एक इस संकलन का उपयोग करता है

gcc -c pi_calc.c
gfortran -o area pi_calc.o area_calc.f90

3

आर एंड सी ++

आवश्यक है inlineऔर Rcppआर में संकुल

get.pi <- inline::cxxfunction(plugin="Rcpp", includes="#include <cmath>", body="return wrap(M_PI);")

get.pi() * 3 ^ 2

cxxfunctionपर्दे के पीछे C ++ फ़ंक्शन बनाता है, संकलित करता है और लिंक करता है। हां, बहुत सी कोड पीढ़ी हो रही है, और return wrap(M_PI);सी ++ कोड ( #includeभाग के साथ ) है।


3

जावा + जावास्क्रिप्ट

class Pi {
    public static void main(String... args) throws Throwable {
        System.out.println((double) new javax.script.ScriptEngineManager()
                .getEngineByName("JavaScript").eval("Math.PI")
                * Math.pow(3, 2));
    }
}
28.274333882308138

आपने मुझे इसमें हरा दिया। :(
सुपरजेडिए 224

3

जूलिया पायथन का उपयोग कर

julia> using PyCall
julia> @pyimport math
julia> math.pi*3^2
28.274333882308138

यह मजेदार था, मैंने पहले कभी PyCall का उपयोग नहीं किया था। इंटरफ़ेस का उपयोग करना आसान है।


3

R + grep + awk + dc

echo pi | R --no-save --quiet | grep -v '^>' | awk '{print $2}' | dc -e '?3 3 **p'

आउटपुट:

28.274337

3

जावा में लुआ के π का ​​उपयोग करना

यह कार्यक्रम जावा में लुआ का मूल्यांकन करने और π प्राप्त करने के लिए लाइब्रेरी लुज का उपयोग करता है। यह लुआ के साथ क्षेत्र को भी चौपट करता है। का आनंद लें!

    ScriptEngineManager sem = new ScriptEngineManager();
    ScriptEngine se = sem.getEngineByName("luaj");
    se.eval("pi = math.pi");
    double pi = (double) se.get("pi");

    int r = 3;

    se.eval("radius = "+r);
    se.eval("rsquared = math.pow(radius, 2)");
    int rsquared = (int) se.get("rsquared");

    double area = pi * rsquared;
    System.out.println("For a circle with a diameter of "+r+", the area is "+area+".");

उत्पादन:

For a circle with a diameter of 3, the area is 28.274333882308138.


2

ज्यथोन + जावा

यह जाइथन में काम करना चाहिए। मुझे यकीन नहीं है, क्योंकि मेरे पास एटीएम का परीक्षण करने का कोई तरीका नहीं है।

from java.lang import Math
print Math.PI * 3 ** 2

Jython जावा पुस्तकालयों तक पहुँच प्राप्त कर सकता है, इसलिए मैं सिर्फ java.lang से गणित वर्ग का आयात कर सकता हूं और सर्कल के क्षेत्र की गणना करने के लिए अपने PI निरंतर का उपयोग कर सकता हूं।

golfed:

import java.lang.Math.PI;print PI*3*3

या, अगर मुझे 3 ^ 2 में कोड करने की अनुमति है:

import java.lang.Math.PI;print PI*9

2

बैश (पर्ल से पर्ल, अजगर, सी)

हो सकता है कि यदि हम अपने द्वारा प्राप्त की गई हर चीज को जोड़ दें, तो हमें अधिक सटीक परिणाम मिलेगा? :)

#!/bin/bash
exec >&>(bc -l|tail -n1)
perl <<EOF
use Math::Trig;
print pi
EOF
echo -n +
python <<EOF
import sys
from math import pi
sys.stdout.write(str(pi))
EOF
echo -n +
cat > pi.c <<EOF
#include <math.h>
main(){printf("%.16f",M_PI);}
EOF
gcc pi.c -o pi &>/dev/null
./pi
rm -f pi pi.c
echo ";"
echo "(last/3)*3.^2"


2

HTML + PHP

<html><body>
value of area of circle is <br>
<?php echo 3*3*M_PI; ?>
</body></html>

भ्रमित है कि क्या यह तीसरे नियम को संतुष्ट करता है। लेकिन चूंकि M_PI पहले से ही उपयोग किया जाता है इसलिए इसे गिनना चाहिए।


2

ACTIONSCRIPT3 + जावास्क्रिप्ट (parse.com का उपयोग करके)

Parse.CFunction('getPi',{},function(returned){trace(3*3*returned.result)});

पार्स क्लास लिंक https://github.com/camdagr8/AS3-Parse-Class/blob/master/com/illumifi/Parse.as

कोड के साथ:

public static function CFunction(className:String, params:Object = null, success:Function = null, error:Function = null) {
            var url:String = Parse.api + "functions/" + className;
            Parse.Call(url, URLRequestMethod.POST, params, null, success, error);
        }

पार्स main.js:

Parse.Cloud.define("getPi", function(request, response) {
  response.success(Math.PI);
});

नतीजा:

28.274333882308138
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.