Bilangan bulat positif x adalah bilangan segitiga persegi jika ada dua bilangan bulat positif yang berbeda, y dan z , yang lebih kecil dari x sehingga semua jumlah
x + y
x + z
y + z
adalah kotak yang sempurna.
Misalnya 30 adalah angka segitiga persegi karena
30 + 6 = 6 2
30 + 19 = 7 2
6 + 19 = 5 2
Tugas Anda adalah menulis beberapa kode yang mengambil bilangan bulat positif sebagai input dan menentukan apakah itu angka segitiga persegi atau bukan. Anda harus menampilkan salah satu dari dua nilai yang berbeda, satu jika inputnya adalah angka segitiga persegi dan yang lainnya sebaliknya.
Ini adalah kode-golf sehingga jawaban akan dicetak dalam byte dengan lebih sedikit byte yang lebih baik.
Testcases
Berikut adalah semua angka segitiga persegi di bawah 1000
30,44,47,48,60,66,69,70,78,86,90,92,94,95,96,98,108,113,116,118,120,122,124,125,126,132,138,142,147,150,152,154,156,157,158,159,160,165,170,176,180,182,185,186,188,190,192,194,195,196,197,198,200,207,212,214,216,218,221,222,224,227,230,232,234,236,237,238,239,240,246,248,253,258,260,264,266,267,268,270,273,274,275,276,278,280,281,282,283,284,285,286,290,296,298,302,303,306,308,310,312,314,317,318,320,322,323,324,326,328,329,330,331,332,333,334,335,336,338,340,344,347,350,351,352,356,357,360,362,364,368,370,371,372,374,376,377,378,380,382,384,385,386,387,388,389,390,392,394,396,402,405,408,410,413,414,415,418,420,422,423,424,426,429,430,432,434,435,436,438,440,442,443,444,445,446,447,448,449,452,456,458,462,464,466,467,468,470,472,476,477,479,480,482,484,485,488,490,491,492,494,496,497,498,500,501,502,503,504,505,506,507,508,509,510,512,515,516,518,522,523,524,527,528,530,533,536,538,540,542,543,546,548,549,550,551,552,554,557,558,560,562,563,564,566,568,569,570,571,572,573,574,575,576,578,579,582,585,588,590,592,593,594,598,600,602,603,604,605,606,608,610,612,613,614,615,616,618,620,621,623,624,626,627,628,630,632,633,634,636,638,639,640,641,642,643,644,645,646,650,652,656,657,658,659,660,662,666,667,668,670,672,674,677,678,680,682,683,686,687,689,690,692,694,695,696,698,700,701,702,704,706,707,708,709,710,711,712,713,714,715,716,717,718,719,720,722,723,726,728,730,734,737,739,740,742,744,745,746,750,752,755,756,758,760,762,764,765,767,768,770,772,773,774,776,778,779,780,782,783,784,785,786,788,789,790,791,792,793,794,795,796,797,798,800,802,803,804,805,810,812,814,816,817,818,819,820,822,825,826,827,828,829,830,832,833,834,836,837,838,840,842,846,847,848,849,850,851,852,854,855,856,858,860,861,862,863,864,866,867,868,869,870,871,872,873,874,875,876,877,878,879,880,882,884,888,890,891,893,896,897,898,902,903,904,905,908,912,913,914,915,916,918,920,923,924,926,927,928,929,931,932,933,935,936,938,940,941,942,944,946,947,948,950,952,953,954,955,956,957,958,959,960,961,962,963,964,965,966,967,968,970,972,974,976,978,980,981,984,986,987,988,992,993,995,996,998
code-golf
number
decision-problem
Wisaya Gandum
sumber
sumber
y < x
danz < x
atau ituy+z < x
?Jawaban:
Haskell , 62 byte
Cobalah online!
sumber
Jelly , 12 byte
Cobalah online!
Bagaimana itu bekerja
sumber
Python 2 ,
938786 byte-1 byte terima kasih kepada Dennis
Cobalah online!
sumber
Brachylog , 19 byte
Cobalah online!
Juga 19 byte:
~hṪ>₁ℕ₁ᵐ≜{⊇Ċ+}ᶠ~^₂ᵐ
Penjelasan
sumber
PowerShell , 150 byte
Cobalah online! atau Verifikasi beberapa kasus uji
Mengambil input
$x
. Menetapkanfilter
(di sini setara dengan fungsi) pada dua input$a,$b
, yang mengembalikan benar Boolean jika dan hanya jika[math]::sqrt
dari$a+$b
adalah-eq
ual denganFloor
itu akar kuadrat (yaitu, itu integer akar kuadrat).Sisanya adalah daging program. Kami menggandakan untuk pengulangan dari
1
ke$x-1
. Setiap iterasi, kita cek apakah$y
adalah-n
ote
qual ke$_
(yaitu, $ z), dan apakah fungsi ini berlaku untuk semua kombinasi$x
,$y
dan$_
. Jika memang,$o
akan bertambah satu (yang membuatnya tidak nol).Akhirnya, pada akhirnya, kita double-Boolean-negate
$o
, yang berubah0
menjadiFalse
dan bukan nol menjadiTrue
. Yang tersisa pada pipa dan output tersirat.sumber
Haskell ,
7569 byteCobalah online!
Mungkin bisa ditingkatkan jika seseorang tahu cara yang lebih pendek untuk menguji apakah angka itu kuadrat. Saya cukup yakin menggunakan
sqrt
akhirnya menjadi lebih lama karenafloor
mengubah hasilnya menjadi tipe integral sehingga Anda perlu memasukkannya kefromIntegral
suatu tempat sebelum Anda dapat membandingkannya dengan yang asli.EDIT: Terima kasih @Wheat Wizard untuk melepas 6 byte!
sumber
JavaScript (ES7),
7571 bytesumber
05AB1E , 18 byte
Cobalah online!
Terima kasih kepada Emigna untuk
-3-1 bytedan perbaikan!sumber
€
karena keduanyan
danO
vectorizes. Ini juga tidak berfungsi karena 2 byte terakhir akan mengembalikan true untuk daftar apa pun dengan setidaknya 1 nilai, meskipun hanya berisi nilai-nilai palsu. Ini dapat diperbaiki (dan disingkat) dengan menggunakanZ
sebagai gantinya.€O
dan itulah mengapa pendekatan sebelumnya melakukan pekerjaan dengan`º
)45
, yang seharusnya mengembalikan false.R , 79 byte
Cobalah online!
menghitung semua nilai
y,z
dengany<-(z=s-x)[z>0&z<x]
, lalu menghitung semua jumlah mereka denganouter(y,y,"+")
. Ini menghasilkan matriks persegi di mana entri off-diagonal berpotensi kuadrat,y==z
hanya jika mereka berada di diagonal. Oleh karena itu,diag(S)=0
tetapkan diagonal ke nol, yang bukan kuadrat sempurna, dan kami menguji untuk melihat apakahany
elemen dariS
adalah%in%s
.sumber
SWI-Prolog , 88 byte
Cobalah online!
g(X)
adalah aturan yang mengambil bilangan bulat sebagai parameter dan menampilkan apakah bilangan segitiga persegi (benar / salah).sumber
JavaScript (ES7), 72 byte
Pengembalian
0
atau1
.Demo
Tampilkan cuplikan kode
sumber
C, 113 byte
Mengembalikan
0
jika jumlahnya segitiga persegi,1
jika tidak.Cobalah online!
sumber
return(int)sqrt(n)==sqrt(n)
sedang diuraireturn((int)sqrt(n))==sqrt(n)
sebagai lawan yang lebih jelasreturn(int)(sqrt(n)==sqrt(n))
? Jika tidak dapatkah Anda menjelaskan apa yangp
sedang dilakukan?==
, jadi ekspresi diurai((int)sqrt(n))==sqrt(n)
seperti yang Anda duga.APL (Dyalog) , 49 byte
Cobalah online!
sumber
Jelly , 15 byte
Cobalah online!
Bagaimana?
sumber
Bersih ,
958886 byteCobalah online!
sumber
Ruby , 73 byte
Cobalah online!
sumber
Julia 0,6 , 61 byte
Mulai membaca dari fungsi
all
. Argumen pertama adalah fungsi anonim yang memeriksa bahwa akar kuadrat dari angka adalah bilangan bulat, ini diterapkan untuk setiap nilai dalam argumen kedua. Argumen tunggalany
adalah denganGenerator
dengan dua untuk loop, yang untuk setiap iterasi berisi output dariall
fungsi.Terima kasih kepada Tuan Xcoder untuk -2 byte.
Cobalah online!
sumber
Pyt , 63 byte
Tes semua kemungkinan kombinasi y, z sedemikian sehingga 1≤z <y <x
Mengembalikan 1 jika x adalah angka segitiga persegi, 0 sebaliknya
Cobalah online!
sumber
MATL ,
201918 byteCobalah online! Mengembalikan 1 untuk falsey, 0 untuk truey.
Testcases hingga 500: Cobalah online! (menggunakan
H
bukanG
). Runtime adalah kuadrat dalam ukuran input, sehingga menghitung testcases dari1
untukn
berjalanO(n^3)
, itulah sebabnya mengapa menghitung semua testcases hingga 1000 kali keluar pada TIO.Menghapus
q
menghasilkan urutan dengan urutan yang diinginkan sebagai bagian, tetapi tanpa kendala ituy
danz
menjadi lebih kecil darix
. Contohnya adalahx=18
,y=7
,z=18
.sumber
APL NARS, 340 byte
uji
sumber