Tantangan
Tantangannya adalah untuk menulis kode yang mengambil bilangan bulat positif 'n' sebagai input dan menampilkan semua cara yang memungkinkan di mana angka dari 1 - n dapat ditulis, dengan tanda positif atau negatif di antaranya, sehingga jumlah mereka adalah sama dengan nol. Harap diingat bahwa Anda hanya dapat menggunakan penambahan atau pengurangan.
Misalnya, jika inputnya adalah 3, maka ada 2 cara untuk membuat penjumlahan 0:
1+2-3=0
-1-2+3=0
Perhatikan bahwa, angkanya berurutan, mulai dari 1 hingga n (yaitu 3 dalam hal ini). Seperti terbukti dari contoh, tanda angka pertama juga bisa negatif, jadi berhati-hatilah.
Sekarang, 3 cukup sederhana. Mari kita buat daftar semua cara ketika kita mempertimbangkan angka 7.
1+2-3+4-5-6+7=0
1+2-3-4+5+6-7=0
1-2+3+4-5+6-7=0
1-2-3-4-5+6+7=0
-1+2+3+4+5-6-7=0
-1+2-3-4+5-6+7=0
-1-2+3+4-5-6+7=0
-1-2+3-4+5+6-7=0
Jadi di sini, kita punya total 8 cara yang mungkin.
Masukan dan keluaran
Seperti yang dinyatakan sebelumnya, input akan menjadi bilangan bulat positif . Output Anda harus berisi semua cara yang memungkinkan angka-angka tersebut memberikan jumlah nol. Jika tidak ada cara yang memungkinkan untuk melakukan hal yang sama, Anda dapat menampilkan apa pun yang Anda suka.
Juga, Anda dapat mencetak output dalam format apapun yang Anda suka . Tapi, itu harus bisa dimengerti . Misalnya, Anda dapat mencetaknya seperti pada contoh di atas. Atau, Anda bisa saja mencetak tanda angka secara berurutan. Jika tidak, Anda juga dapat mencetak '0 dan' 1 secara berurutan, di mana '0' akan menampilkan tanda negatif dan '1' akan menampilkan tanda positif (atau sebaliknya).
Misalnya, Anda dapat mewakili 1 + 2-3 = 0 menggunakan:
1+2-3=0
1+2-3
[1,2,-3]
++-
110
001
Namun, saya akan merekomendasikan menggunakan salah satu dari tiga format pertama untuk kesederhanaan. Anda dapat menganggap semua input valid.
Contohnya
7 ->
1+2-3+4-5-6+7=0
1+2-3-4+5+6-7=0
1-2+3+4-5+6-7=0
1-2-3-4-5+6+7=0
-1+2+3+4+5-6-7=0
-1+2-3-4+5-6+7=0
-1-2+3+4-5-6+7=0
-1-2+3-4+5+6-7=0
4 ->
1-2-3+4=0
-1+2+3-4=0
2 -> -
8 ->
1+2+3+4-5-6-7+8=0
1+2+3-4+5-6+7-8=0
1+2-3+4+5+6-7-8=0
1+2-3-4-5-6+7+8=0
1-2+3-4-5+6-7+8=0
1-2-3+4+5-6-7+8=0
1-2-3+4-5+6+7-8=0
-1+2+3-4+5-6-7+8=0
-1+2+3-4-5+6+7-8=0
-1+2-3+4+5-6+7-8=0
-1-2+3+4+5+6-7-8=0
-1-2+3-4-5-6+7+8=0
-1-2-3+4-5+6-7+8=0
-1-2-3-4+5+6+7-8=0
Mencetak gol
Ini kode-golf , jadi kode terpendek menang!
+
sebagai N
dan -
sebagai-N
, atau apakah itu terlalu jauh? (eg 3
-> [[-3,-3,3], [3,3,-3]]
)
0
dan 1
tetapi menggunakan N
dan -N
(lihat edit saya di atas)