Apakah itu bilangan bulat?

MD XF 11/18/2017. 30 answers, 1.250 views
code-golf number decision-problem integer

Angka keseluruhan jika bilangan bulat non-negatif tanpa desimal. Jadi 0 dan 8 dan 233494.0 utuh, sedangkan 1.1 dan 0.001 dan 233494.999 tidak.


Memasukkan

Angka floating-point di basis data / pengkodean default bahasa Anda.

Sebagai contoh, representasi bilangan bulat default untuk Kalkulus Lambda Lambda adalah angka-angka Gereja . Tapi representasi bilangan bulat default untuk Python adalah base 10 decimal , bukan Unary .

Keluaran

Nilai yang benar jika inputnya utuh, nilai yang salah jika tidak.

Perhatikan bahwa jika bahasa Anda hanya mendukung ketepatan desimal, katakanlah, 8 tempat, 1.000000002 dapat dianggap keseluruhan.

Input dan output dapat dilakukan melalui metode standar I / O.


Uji kasus

Input        -> Output
332          -> true
33.2         -> false
128239847    -> true
0.128239847  -> false
0            -> true
0.000000000  -> true
1.111111111  -> false
-3.1415926   -> false
-3           -> false 

Penilaian

Seperti , pengiriman terpendek menang. Semoga berhasil!

5 Comments
5 Stephen Leppik 11/18/2017
Serius, terlalu mudah. Padahal, itu tidak menguntungkan bahasa golf biasa.
1 MD XF 11/18/2017
@StephenLeppik Ini tidak lebih mudah daripada tantangan paritas vanilla, atau Hello World, atau Truth Machine. (Sebenarnya, ini lebih sulit daripada kebanyakan.)
LyricLy 11/18/2017
Bisakah kita mengambil masukan sebagai dua angka, mewakili pecahan?
MD XF 11/18/2017
@LyricLy Tidak, itu akan jauh lebih mudah untuk beberapa bahasa atau tidak perlu bagi orang lain.
Thomas Ward 11/18/2017
Perhatikan bahwa bilangan bulat adalah bilangan bulat non-negatif. Harap perbarui kalimat pertama Anda untuk merenungkan ini. Dan Anda dapat menambahkan dalam kasus uji angka negatif jika Anda ingin menunjukkan bagaimana angka keseluruhan tidak negatif dan hasil yang salah untuk angka negatif valid.

30 Answers


flawr 11/18/2017.

Haskell , 27 16 byte

Fungsi ini memeriksa apakah x terdapat dalam daftar bilangan bulat nonnegatif yang tidak lebih besar dari x .

 f x=elem x[0..x] 

Cobalah online!

1 comments
Challenger5 11/19/2017
elem<*> \x->[0..x] juga bekerja selama 18 byte.

Erik the Outgolfer 11/18/2017.

APL (Dyalog) , 3 byte

 ⌊≡| 

Cobalah online!

Perhatikan bahwa f← telah ditambahkan ke link TIO karena keterbatasan teknis, namun biasanya tidak diperlukan.

2 comments
Galen Ivanov 11/18/2017
Itu elegan! Saya tidak tahu mengapa saya menambahkan langit-langit yang tidak perlu untuk jawaban saya ....
2 Erik the Outgolfer 11/18/2017
@GalenIvanov Ini hanya floor(n) == abs(n) .

Conor O'Brien 11/18/2017.

Wolfram Language (Mathematica) , 17 15 14 byte

Saved 1 byte thanks to Not a tree!

#>=0==#~Mod~1& 

Cobalah online!

Jawaban Mathematica pertama \ o /

Mathematica, 15 byte

Saved 2 bytes thanks to @user202729!

#==⌊Abs@#⌋& 
5 comments
1 user202729 11/18/2017
1 user202729 11/18/2017
Ada yang salah dengan 0. test case. Pokoknya 15 byte
Conor O'Brien 11/18/2017
@ user202729 Terima kasih! Ide bagus!
4 Not a tree 11/18/2017
1 caird coinheringaahing 11/18/2017
@Notatree Nevermind, tidak melihat contoh itu dalam pertanyaan

isaacg 11/18/2017.

Pyth, 4 byte

qs.a 

Test suite

Apakah bilangannya sama ( q ) ke lantai dari nilai absolutnya ( .a )?


tfbninja 11/18/2017.

Aceto , 6 byte

rfdi±=p 
  r ambil masukan  f mengubahnya menjadi float  d dan saya menduplikatnya dan mengubahnya menjadi bilangan bulat  ± mendorong nilai absolutnya (b / c tidak bisa negatif)  = cek apakah sama  p mencetak hasilnya 

Cobalah online!


Mr. Xcoder 11/18/2017.

Pyth , 6 byte

&gQZsI 

Cobalah online!

5 comments
Conor O'Brien 11/18/2017
Hal ini nampaknya gagal karena angka negatif
Mr. Xcoder 11/18/2017
@Conor Pffff aku salah tafsir. Tetap!
Dave 11/19/2017
q.as sepertinya melakukannya di 4
Dave 11/19/2017
Nevermind, solusi thats @ isaacg!
MD XF 11/19/2017
@ Sebenarnya, dia adalah qs.a , sangat mengejutkan bahwa dua anagram akan mencapai hasil yang sama ...

ovs 11/18/2017.

Python 2 , 18 byte

 lambda n:n%1==0<=n 

Cobalah online!


Tom Carpenter 11/18/2017.

Octaf , 15 byte

 @(x)any(x==0:x) 

Cobalah online!

Yang ini didasarkan pada pendekatan yang digunakan dalam jawaban Haskell @ flawr .

Sementara itu membawa jumlah byte turun menjadi 15, ini sangat tidak efisien (tidak tersinggung), membuat daftar setiap bilangan bulat dari 0 sampai x dan melihat apakah x terkandung di dalamnya.


Octaf , 18 byte

 @(x)fix(x)==abs(x) 

Cobalah online!

Membawa masukan sebagai angka presisi ganda. Mengembalikan nilai true jika keseluruhan.

Memeriksa apakah input saat dibulatkan sama dengan besarnya input. Ini hanya akan terjadi bila jumlahnya positif dan utuh.


Octaf , 18 byte

 @(x)~mod(x,+(x>0)) 

Cobalah online!

Solusi alternatif untuk 18 byte. Sayangnya fungsi mod di Octave tidak akan secara implisit mengubah bool menjadi double , jadi +( ) dibutuhkan di sekitar yang lebih besar daripada perbandingan. Jika tidak, solusi ini akan lebih pendek.


Octaf , 18 byte

 @(x)x>=0&~mod(x,1) 

Cobalah online!

Dan satu lagi ... saya tidak bisa mendapatkan lebih rendah dari 18 byte . Semua karena harus membiarkan 0 menjadi benar dengan >= bukan hanya > .


LyricLy 11/18/2017.

Ly , 35 47 byte

ir"-"=[0u;]pr[["0"=![psp>l"."=[ppr!u;]p<2$]pp]] 

Cobalah online!

Ly memiliki dukungan pelampung, namun satu-satunya cara untuk menciptakan float saat ini adalah dengan melakukan pembagian. Tidak ada cara untuk mengambil pelampung sebagai masukan, jadi saya harus mengecek stringnya secara manual.

Hilang 13 byte menambah dukungan untuk angka negatif.


boboquack 11/18/2017.

/// , 94 byte, masukan kode keras

/=/\/x://:/\/\///-0/-:.0/.:.|/|:-|/|:0=1=2=3=4=5=6=7=8=9=|x/|:||/true:x:/-:/.:/|/+:++/false/|| 

Cobalah online!

Masukan antara dua garis vertikal yang berakhir ( || )

Strips -00...0 dan .00...0 , mengubah semua digit yang tersisa menjadi x s, kemudian menguji apakah jumlah yang tersisa masih memiliki x s setelahnya . atau - tidak diikuti oleh . .

Bisa menghemat sampai 7 byte tergantung pada apa yang dihitung sebagai kebenaran dan kepalsuan karena bahasa ini tidak memiliki nilai kebenaran asli / kesalahan, saat ini keluaran true dan false tapi bisa berubah menjadi, misalnya, T dan F untuk 87 byte jika itu diperbolehkan .


Zgarb 11/18/2017.

Sekam , 3 byte

£ΘN 

Cobalah online! Waktu ujian ketiga keluar di TIO, jadi saya memotong beberapa digit. Saya mencoba menjalankannya secara lokal, namun membunuhnya setelah beberapa menit karena menggunakan memori lebih dari 6GB dan komputer saya mulai gagap. Ini harus secara teoritis selesai di beberapa titik ...

Penjelasan

Ini sesuai dengan deskripsi tantangan secara langsung.

£ΘN  Implicit input: a number.
  N  The infinite list [1,2,3,4...
 Θ   Prepend 0: [0,1,2,3,4...
£    Is the input an element of this list? 
2 comments
Lynn 11/18/2017
Apa yang akan λx → floor(x) == abs(x) terlihat seperti di Husk?
Zgarb 11/18/2017
@Lynn Itu akan menjadi §=⌊a , jadi satu byte lagi.

steenbergh 11/18/2017.

QBIC , 17 byte

?(:=int(a))*(a>0) 

Penjelasan

?             PRINT
 (:=int(a))     if the input (: assigns the cmd line param to 'a') equals itself 
                cast to int, -1 else 0
 *              times
 (a>0)          if the input > 0, -1 else 0 

Jika salah satu cek gagal, ini mengembalikan 0. Jika keduanya benar, ia mengembalikan -1 x -1 = 1


MD XF 11/19/2017.

Implisit (versi mendahului tantangan), 10 byte

÷±1>?{;;ö} 

Cobalah online! (Hanya akan bekerja setelah Dennis menarik TIO)

÷±1>?{;;ö}   no implicit input :(
÷            read float
 ±1          push -1
   >         push (input > -1)
    ?{...}   if truthy
      ;      pop (input > -1)
       ;     pop -1
        ö    push iswhole(input)
             implicit integer output.
                if (input > -1) was false, it prints (input > -1).
                otherwise, it prints iswhole(input). 

Posting ini sebagai solusi alternatif karena saya harus memperbarui builtin setelah menyadari bahwa bilangan bulat adalah> = 0, yang terasa selingkuh.

Tersirat , 1 byte

ö 

Tidak no bahasa lain yang membangun ini?

implicit float input
ö  push truthy if whole, falsy otherwise
   implicit int output 

MD XF 11/18/2017.

C (gcc), 27 28 27 byte

#define g(f)!fmod(f,1)&f>=0 

Cobalah online!

Mendefinisikan fungsi makro " g yang mengambil parameter f (tipe apapun). Kemudian periksa apakah casting f mod 1 adalah nol, dan jika f tidak negatif.

4 comments
HatsuPointerKun 11/18/2017
Saya pikir Anda diminta untuk memasukkan ukuran perintah yang include dalam hitungan byte Anda, karena fmod didefinisikan dalam math.h : lihat di sana
Mr. Xcoder 11/18/2017
@HatsuPointerKun Ini bekerja tanpa itu juga
1 Mr. Xcoder 11/18/2017
Namun, kode Anda pada tio adalah 28 bytes + -lm untuk 30.
1 Conor O'Brien 11/18/2017
Saya tidak berpikir Anda membutuhkan -m pada distribusi berbasis windows C (bekerja pada mesin saya)

edc65 11/18/2017.

JavaScript, 14

n=>!(n<0||n%1) 
5 comments
Ismael Miguel 11/18/2017
13 byte: n=>!(n-(n|0))
ThePirateBay 11/18/2017
@IsmaelMiguel. Itu tidak bekerja untuk angka negatif.
Ismael Miguel 11/18/2017
@ThePirateBay Angka pastinya? Saya mencoba dengan 5, 5.1, -5, -5.1, 0, 0.1 dan -0.1.
ThePirateBay 11/18/2017
@IsmaelMiguel. (n=>!(n-(n|0)))(-3) mengembalikan nilai true , tapi harus mengembalikan false . Lihat test case terakhir.
Ismael Miguel 11/18/2017
Oh, Anda benar bahwa: / Saya salah membaca pertanyaan: /

Thomas Ward 11/18/2017.

Python 2 dan Python 3 , 21 18 byte

 lambda n:n>=0==n%1 

Cobalah online! (Py2)
Cobalah online! (Py3)

3 byte disimpan berkat Mr XCoder.

5 comments
LyricLy 11/18/2017
Tantangannya mengatakan untuk mengambil masukan sebagai pelampung. Ini memberikan output yang salah untuk 324.0 .
Thomas Ward 11/18/2017
@LyricLy diperbarui, ini harus bekerja dengan baik sekarang untuk semua kasus uji. Ini mengasumsikan bahwa kita hanya lewat di pelampung dan bukan hal-hal palsu seperti "FUBAR" sebagai masukan, tentu saja, tapi eh.
Thomas Ward 11/18/2017
@LyricLy versi Py3 yang dibutuhkan untuk memiliki float() membungkus input() call though, karena Py3 menyimpan semua input sebagai string, jadi kita harus mengapung terlebih dahulu. Sekali lagi, kedua hal ini akan meledak jika kita melewati data non-numerik palsu.
LyricLy 11/18/2017
Tidak perlu menggunakan terner. Anda juga bisa menggunakan pernyataan lambda untuk menghemat lebih banyak lagi. Akhirnya, Anda dapat menghapus byte dari spasi yang tidak perlu setelah int(i) untuk 26 byte.
Thomas Ward 11/18/2017
@LyricLy Saya menguranginya lebih dari 21 byte. :)

Perl 6 , 15 13 byte

 {.narrow~~UInt} 

Menguji

 {.Int==$_>=0} 

Menguji

1 comments
nwellnhof 11/19/2017
{!/\D/} hanya 7 byte.

user202729 11/19/2017.

Jelly , 3 byte

ḞA= 

Cobalah online!

Algoritma ini sama dengan yang digunakan pada jawaban Mathematica diatas.

5 comments
Erik the Outgolfer 11/18/2017
Tidak, bukan bug yang tidak dapat Anda sebutkan secara eksplisit pada bagian integer 0 , ini adalah fitur, dan khususnya aturan sintaks yang menentukan bahwa 0 terdepan adalah 0 dengan sendirinya, jadi misalnya 053 sama dengan 0 53 dan 0.5 sama dengan 0 .5 .
user202729 11/18/2017
@EriktheOutgolfer Bagus. Tapi kapan kamu butuh 2 nilad berturut-turut?
Erik the Outgolfer 11/18/2017
Beberapa kasus akan menjadi pasangan dyad-nilad yang diikuti oleh pasangan nilad-dyad dan yang cepat yang membawa banyak nilad berturut-turut (secara khusus ƭ = dasi), dan kasus ketiga akan menjadi sesuatu seperti trailing (dyad)(nilad)(nilad) atau (monad)(nilad) atau (dyad)(nilad)(nilad)(monad) atau bahkan (monad)(nilad)(monad) dll.
user202729 11/18/2017
@EriktheOutgolfer Ternyata ƭ adalah salah satu quicks yang tidak memiliki spesifikasi sintaks ... / Apa yang mereka lakukan?
Jonathan Allan 11/18/2017
Semua detail tentang bagaimana Jelly menafsirkan "masukan" (kode di footer Anda) hanya diperlukan karena penerapan suite uji Anda (menggunakan kode Jelly untuk memberi angka) jika Anda menggunakan argumen itu dievaluasi sebagai kode Python - lihat ini misalnya

Galen Ivanov 11/18/2017.

J , 7 4 byte

Menghilangkan cek celing yang tidak perlu setelah solusi Erik The Outgolfer

<.=| 

Cobalah online!


Shaggy 11/18/2017.

Japt, 6 4 3 byte

¶Âa 

Cobalah


Penjelasan

Memeriksa persamaan yang ketat ( ) antara input dan nilai absolut ( a ) input dengan bitwise TIDAK diaplikasikan dua kali ( Â ).

1 comments
edc65 11/19/2017
Apakah bekerja untuk angka> 2 ^ 31?

officialaimm 11/18/2017.

Rekursiva , 4 byte

=aIa 

Cobalah online!


Renzo 11/18/2017.

Common Lisp, 36 32 byte

(lambda(n)(=(max n 0)(floor n))) 

Cobalah online!

Transposisi jawaban marmeladze .


CSM 11/18/2017.

C di Linux, 31 byte

int f(float v){return!rintf(v);} 

Prototipe yang tepat untuk rintf adalah float rintf(float) . Namun, di IEEE floating-point, 0.0f memiliki representasi biner dari semua nol. Kami (salah) menggunakan fitur ini untuk lolos tanpa menggunakan prototipe; nilai nol / non-nol kemudian terbalik menjadi 1 atau 0.

1 comments
2 technosaurus 11/19/2017
atau #define f(v)!rintf(v)

yummypasta 11/18/2017.

C #, 40 37 byte

bool z(float x){return x%1==0&&x>=0;} 

Jawaban lama (40 bytes):

bool z(float x){return (int)x==x&&x>=0;} 

FlipTack 11/18/2017.

Python simbolis , 21 byte

_=_%(_==_)==(_!=_)<=_ 

Try it online!

Menggunakan perbandingan yang dirantai:

  • _%(_==_) == (_!=_) memeriksa apakah n%1 == 0 , hanya berlaku jika n tidak memiliki bagian desimal.
  • (_!=_) <= _ memeriksa apakah 0 <= n , hanya berlaku jika bilangan bulat tidak negatif.

mbomb007 11/18/2017.

Retina , 12 10 byte

Cocokkan format bilangan bulat non-negatif

^\d+\.?0*$ 

Try it online

-2 thanks to FryAmTheEggman

5 comments
user202729 11/18/2017
Tapi juga cocok dengan angka negatif. Sepertinya Anda salah mengerti pertanyaannya.
1 mbomb007 11/18/2017
Oh baiklah. Tetap. Itu sebenarnya lebih pendek
jimmy23013 11/18/2017
^\d+$|\.0*$ .
FryAmTheEggman 11/18/2017
Ini juga harus bekerja.
H.PWiz 11/18/2017
Saya percaya ^\d*.0*$ berlaku

Zacharý 11/19/2017.

SAYA , 8 byte

ω≥ωω⌊=∧← 

Cobalah online!

Tautan menggunakan array untuk menguji beberapa nomor sekaligus.

Bagaimana?

  • ω≥ = ω>=0 ( 0 muncul saat tumpukan kosong)
  • ωω⌊= = ω==floor(ω)
  • ∧← = mengambil logika dan hal-hal di atas, lalu output.

Olivier Grégoire 11/19/2017.

Java (OpenJDK 8) , 14 byte

 n->n%1==0&n>=0 

Cobalah online!


HatsuPointerKun 11/19/2017.

C, C + +: 38 byte

-1 byte berkat Zacharý

 int w(float n){return(int)n==n&&n>=0;} 

Untuk pengujian

C: Cobalah secara online

Kode C:

 int main() {
    float f[] = { 332,33.2f,128239847,0.128239847f,0,0.0000f,1.1111111111f,-3.1415926f,-3 };
    int t;
    for ( t = 0; t < 9; ++t) {
        printf("%f = %s\n", f[t], w(f[t])?"true":"flase");
    }
    return 0;
} 

C ++ Kode:

 int main() {
    std::initializer_list > test{
        {332.f,true}, {33.2f,false}, {128239847.f,true}, {0.128239847f,false}, {0.f,true}, {0.000000f,true}, {1.111111f,false}, {-3.1415926f,false}, {-3.f,false}
    };

    for (const auto& a : test) {
        if (w(a.first) != a.second) {
            std::cout << "Error with " << a.first << '\n';
        }
    }
    return 0;
} 
2 comments
1 MD XF 11/18/2017
Ini hanya akan bekerja sampai dengan INT_MAX . (Saya tidak terlalu peduli tapi beberapa orang melakukannya.)
Zacharý 11/19/2017
Apakah mengubahnya return(int)n==n... bekerja?

Ben 11/19/2017.

Python 3, 59 57 48 byte

 print("1")if float(input())%1==0else print("0") 

Cobalah

4 comments
caird coinheringaahing 11/18/2017
Selamat datang di situs ini! Anda tidak harus secara eksplisit menghasilkan true dan false , sebagai gantinya Anda bisa mengeluarkan dua nilai berbeda, seperti 1 dan 0, itu sama dengan true dan false. Juga, jawaban ini bisa dilakukan dengan membuang spasi yang tidak perlu, dan trik lainnya yang ditemukan di sini
1 Jonathan Allan 11/18/2017
Gagal untuk bilangan bulat negatif (persyaratannya adalah memperlakukan ini bukan bilangan bulat).
3 Jonathan Allan 11/18/2017
Perhatikan bahwa eval lebih pendek dari float dan akan cukup di sini. Anda juga bisa memasukkannya if di dalam print Anda: print("1"if eval(input())%1==0else"0") . Selanjutnya Anda bisa menggunakan string indexing: print("01"[eval(input())%1==0]) . Tapi kita tidak perlu "1" dan "0" sama sekali: print(eval(input())%1==0) . Sebuah lambda kemudian akan menghemat lebih banyak: lambda n:n%1==0 (bukankah ini memperbaiki masalah yang saya catat di atas).
1 jpmc26 11/19/2017
Mengapa tidak langsung print boolean secara langsung? print(float(input())%1==0) Meskipun masalah bilangan bulat negatif cukup besar.

HighResolutionMusic.com - Download Hi-Res Songs

1 Martin Garrix

Yottabyte flac

Martin Garrix. 2018. Writer: Martin Garrix.
2 Dyro

Latency flac

Dyro. 2018. Writer: Martin Garrix;Dyro.
3 Martin Garrix

Access flac

Martin Garrix. 2018. Writer: Martin Garrix.
4 Alan Walker

Diamond Heart flac

Alan Walker. 2018. Writer: Alan Walker;Sophia Somajo;Mood Melodies;James Njie;Thomas Troelsen;Kristoffer Haugan;Edvard Normann;Anders Froen;Gunnar Greve;Yann Bargain;Victor Verpillat;Fredrik Borch Olsen.
5 Sia

I'm Still Here flac

Sia. 2018. Writer: Sia.
6 Bradley Cooper

Shallow flac

Bradley Cooper. 2018. Writer: Andrew Wyatt;Anthony Rossomando;Mark Ronson;Lady Gaga.
7 Cardi B

Taki Taki flac

Cardi B. 2018. Writer: Bava;Juan Vasquez;Vicente Saavedra;Jordan Thorpe;DJ Snake;Ozuna;Cardi B;Selena Gomez.
8 Blinders

Breach (Walk Alone) flac

Blinders. 2018. Writer: Dewain Whitmore;Ilsey Juber;Blinders;Martin Garrix.
9 Halsey

Without Me flac

Halsey. 2018. Writer: Halsey;Delacey;Louis Bell;Amy Allen;Justin Timberlake;Timbaland;Scott Storch.
10 Lady Gaga

I'll Never Love Again flac

Lady Gaga. 2018. Writer: Benjamin Rice;Lady Gaga.
11 Mako

Rise flac

Mako. 2018. Writer: Riot Music Team;Mako;Justin Tranter.
12 Kelsea Ballerini

This Feeling flac

Kelsea Ballerini. 2018. Writer: Andrew Taggart;Alex Pall;Emily Warren.
13 Dewain Whitmore

Burn Out flac

Dewain Whitmore. 2018. Writer: Dewain Whitmore;Ilsey Juber;Emilio Behr;Martijn Garritsen.
14 Avril Lavigne

Head Above Water flac

Avril Lavigne. 2018. Writer: Stephan Moccio;Travis Clark;Avril Lavigne.
15 Lady Gaga

Look What I Found flac

Lady Gaga. 2018. Writer: DJ White Shadow;Nick Monson;Mark Nilan Jr;Lady Gaga.
16 Billie Eilish

When The Party's Over flac

Billie Eilish. 2018. Writer: Billie Eilish;FINNEAS.
17 Bradley Cooper

Always Remember Us This Way flac

Bradley Cooper. 2018. Writer: Lady Gaga;Dave Cobb.
18 Rita Ora

Let You Love Me flac

Rita Ora. 2018. Writer: Rita Ora.
19 Diplo

Electricity flac

Diplo. 2018. Writer: Diplo;Mark Ronson;Picard Brothers;Wynter Gordon;Romy Madley Croft;Florence Welch.
20 Charli XCX

1999 flac

Charli XCX. 2018. Writer: Charli XCX;Troye Sivan;Leland;Oscar Holter;Noonie Bao.

Related questions

Hot questions

Language

Popular Tags