Teka-teki
Anda harus menulis sebuah program atau fungsi p (n) yang mengembalikan kuadrat dari apa yang dimasukkan ke dalamnya dan Anda dapat mengasumsikan bahwa inputnya adalah bilangan bulat non-negatif. Sederhananya, kembalikan n 2 .
Aturan
- Anda tidak diizinkan untuk menggunakan
*
atau/
(atau operator daya atau akar kuadrat lainnya, sepertiPOW
atauSQRT
, jika bahasa Anda mengandung fungsi tersebut) - Anda tidak boleh menggunakan loop, atau menggunakan konstruksi yang mirip dengan loop. Contoh konstruksi seperti loop
GOTO
dan rekursi.
Contoh
Function p(n)
Dim r()
ReDim r(n)
p = Len(Join(r, Space(n)))
End Function
Jadilah kreatif dan (ab) gunakan fungsi dan fitur yang diberikan kepada Anda oleh bahasa pilihan Anda.
* edit
Struktur seperti loop adalah loop yang memungkinkan Anda mengulangi 1 atau lebih instruksi
-Jika Anda bisa menambahkan stdout "1"
kode Anda dan Anda akan berakhir dengan mengulangi output itu n kali, itu akan dihitung sebagai loop
m*n
daripadan*n
tanpa menggunakan*
. Lihat codegolf.stackexchange.com/a/18283/14485Jawaban:
CJam, memakai kacamatanya
Masukan melalui STDIN
Coba kodenya di sini
Perhatikan bahwa
*
dalam kode ini tidak digunakan sebagai perkalian, tetapi sebagai operator gabunganJuga perhatikan bahwa bagian keren dari kode bukan hanya string, setengahnya sebenarnya adalah kode yang terlibat dalam menemukan kuadrat. Jadi .. BERHUBUNGAN DENGAN IT
Ini akan membantu Anda dalam menghadapinya:
sumber
Rubi
sumber
FromDigits[{1, 0, 0}, Input[]]
. Sama di CJam:4Ybl~b
APL? ∊⍵⍵
Jawaban ini didedikasikan untuk semua orang yang pergi "∊⍵⍵" setiap kali mereka melihat simbol APL :-)
Contohnya
Penjelasan
sumber
+/
dalam bahasa lain disebutsum()
dan saya melihat banyak jawaban menggunakannya. Dengan alasan yang sama Anda tidak bisa menggunakan*
CJam.Menyalahgunakan beberapa fungsi di Mathematica
Dua kali luas segitiga siku-siku sama kaki
Luas kotak. Tentu saja!
Gagasan yang sama, dalam bentuk yang berbeda:
Jumlah elemen dalam matriks persegi:
atau
atau
atau
dll ...
sumber
k[n_] := Integrate[n, {x, 0, n}]
?Integrate
sangat bagus tapi iterasi, yang saya percaya adalah bentuk perulangan.Area
dan teman-teman adalah perkalian implisit (tetapi juga diperbolehkan)C
catatan:
int
digunakan untuk mengurangi jumlah karakter dan untuk poin gaya.sumber
Mathematica
Jawaban lain menggunakan beberapa fitur Mathematica yang lucu
Grafik lengkap dengan
n
simpul memilikibinom(n,2) = n(n-1)/2
tepi (yang juga merupakan angka segitiga ke-n). Jadi hasilnya hanya dua kali lipat, ditambah input.sumber
Python 2
Murni matematis, menghindari operasi yang dilarang:
Ini adalah
exp(ln(x)*y)
trik biasa yang disesuaikan dengan masalah ini:ln(x)+ln(x)
untuk menyingkirkan perkalian.math.exp()
itu agak terlalu dekat dengan "POW" yang dilarang untuk permainan yang adil, jadi alih-alih semuanya diubah menjadi kompleks dan identitas Euler digunakan untuk menggantikanexp()
dengancos()
dansin()
i
diperlukan,complex()
fungsi digunakan sebagai gantinya.sumber
math.log
kecmath.log
Anda dapat menangani angka negatif. Anda juga tidak perlu melakukannyaimport math
.input
tidak melakukan apa yang Anda pikirkan dalam Python 2, dan dalam Python 3print
adalah fungsi alih-alih pernyataan.input
dalam Python 2? ;-). Saya pasti akan menulis ini secara berbeda jika ini menjadi kode produksi, tetapi untuk keperluan tantangan ini tidak apa-apa, selama inputnya adalah ekspresi numerik yang terbentuk dengan baik. Saya mengerti ada eval implisit di sana, dan potensi kejahatannya.Bash murni
Tidak ada loop atau aritmatika eksplisit:
Menggunakan bash expansions untuk membuat dua daftar 1-n dan brace-expand mereka dan menampilkan ukuran array yang dihasilkan.
Metode serupa, tetapi menggunakan coreutils sebagai gantinya:
sumber
R, inefisiensi lezat dengan Monte Carlo
Harapan
E[x]
untuk parametriisasi bentuk / skala dari Distribusi Gamma adalahshape*scale
.Saya tidak melihat
mean
dilarang, jadi di sini adalah solusi sampel denganmean()
Tanpa menggunakan
mean()
, dimungkinkan untuk menggunakanmode[x]
, yang sama dengan(shape-1)*scale
, tetapi ini melibatkan penulisanadd.one
fungsi untuk memotong+1
lalu menulisMode
fungsi lain untuk mentabulasi mode.Keakuratan tidak dijamin, tetapi undang-undang dalam jumlah besar harus mendukung 1.000.000.000 sampel, yang telah memberi saya hasil yang tepat untuk semua kasus pengujian saya.
sumber
Jawa
Entri pertama, apakah ini cara kerjanya?
sumber
C #
Membuat string dengan n karakter dan kemudian mengganti setiap karakter dengan string n-karakter. Ini menghasilkan string dengan panjang n * n.
Uji di sini: http://ideone.com/lubIFg .
sumber
Matlab
sebuah peringatan: ini terutama berbasis matematika, jadi jangan berharap kode sumber mewah
Perhatikan bahwa
a = n^2
ifflog(a) = log(n)*2
ifflog(log(a)) = log(log(n))+log(2)
. Jadi fungsi ini hanya menemukan nol fungsif(a) = log(log(n))+log(2) - log(log(a))
yang jelas berada dia = n^2
.Berikut beberapa fungsi yang tidak terlalu kreatif:
Di sini program akan menjumlahkan angka
1+2+3+...+n = 1/2 * (n^2+n)
dua kali dan mengurangin
, sehingga hasilnya selalun^2
Fungsi ini menciptakan
n x n
matriks angka acak (antara 0 dan 1) dan kemudian mengembalikan jumlah elemen.Fungsi berikut ini membuat matriks vandermonde dari vektor
(0,0,n)
dan menampilkan entri yang terdiri darin^2
Fungsi ini menciptakan kebalikan dari matriks Hilbert ukuran
n
mana kiri atas elemen selalun^2
sumber
g=@(n)nnz(nan(n));
demi efisiensi dan singkatnya. ;-)function s = g(n); a = inv(hilb(n)); s = a(1); end
. Tetapi sekali lagi, solusi Anda lebih pendek; PC
Ini berfungsi hingga INT_MAX dalam waktu yang konstan dan tanpa alokasi memori.
Contoh:
menampilkan
sumber
Jawa
Ini adalah jawaban pertama yang benar-benar tidak menggunakan loop atau rekursi.
sumber
System.out.print(1)
untukm
, program ini akan mencetak1
persis 32 kali, tidak n kali.GolfScript
Histocrat telah menunjukkan satu cara menggunakan konversi basis: inilah cara lain.
Pembedahan
sumber
Emacs Lisp
Makro sederhana yang diperluas
(square-it 5)
menjadi(+ 5 5 5 5 5)
. Tentu saja, input harus berupa konstanta waktu kompilasi.sumber
Javascript
sumber
Haskell
Ada banyak kemungkinan jika rentang
[x..y]
diizinkan, beberapa di antaranya adalah:Dua yang terakhir menggunakan turunan daftar Monad. untuk daftar
xs
,ys
menyatakan bahwaxs>>ys
iniys
ditambahkan ke dirinya sendirilength xs
kali.Trik lain adalah adil
fungsi ini, ketika diberi argumen 'tepat' (yang tentu saja dari typeclass
Num
) mengembalikan kuadratnya.Product 3 :: Num a => Product a
adalah contoh dari argumen semacam itu.pada dasarnya, fungsi ini ketika diterapkan
Product a
, (yang diNum
kelas iffa
ada di i)mappend
s dengan sendirinya dan kembaliProduct (a*a)
.jika kita lebih ketat tentang apa itu angka / angka apa fungsi kita bekerja, kita dapat mendefinisikan
f
sebagaisumber
Jawa
Ini terlalu panjang untuk dijawab, tetapi pada dasarnya salah satu baris kode muncul beberapa kali kira-kira sama dengan sqrt
Integer.MAX_VALUE
(yaitu 46340). : DTanpa komentar atau jeda baris, kode yang diketikkan menjadi 1.112.155 karakter.
sumber
R
Fungsi ini didasarkan pada penghitungan semua kemungkinan kombinasi dari dua urutan mulai dari 1 hingga
n
. Nilai 0 diperlakukan secara terpisah.sumber
Clojure
Urutan tak terbatas dari semua kotak mulai dari 0. Fungsi:
sumber
J
Beberapa ascii art ...
sumber
perl:
sumber
SQL (PostGIS)
Memanfaatkan area dan membuat fungsi amplop dalam ekstensi PostGIS ke PostGreSQL untuk membuat geometri persegi dan mengembalikan area itu. Bisa diubah untuk mengembalikan kuadrat mengapung juga.
Digunakan;
sumber
Python
Menggunakan matematika sederhana. Berdasarkan jumlah perkembangan aritmatika.
Penjelasan:
Meskipun jumlah dan rentang mungkin berisi loop implisit,
tetapi sesuai spek pertanyaan, tidak ada cara untuk memasukkan pernyataan cetak di sini untuk membuatnya berulang, jadi ... :)
sumber
Pesta
Hanya berfungsi jika n <256.
sumber
PHP
bekerja dengan integer dalam kisaran [0; 46340]
Sunting: Saya baru saja melihat kode @thebestone dan pada dasarnya sama
sumber
Perl
program mengharapkan nomor input dikuadratkan dalam bentuk unary (yaitu basis 1). Outputnya juga unary. Ini hanya mengganti setiap digit dengan angka keseluruhan.
Contoh penggunaan:
sumber
Scala:
sumber
Scala:
sumber