Usaha menyeimbangkan
Ikhtisar
Diberikan input 3 bilangan bulat positif satu digit yang mewakili satu set bobot, output representasi ASCII dari jungkat-jungkit dengan bobot ditempatkan di atasnya sehingga seimbang di sekitar poros pusat, dengan mempertimbangkan efek tuas.
Setiap angka memiliki bobot yang sama dengan nilainya. Torsi masing-masing angka adalah berat yang dikalikan jarak dari pusat dalam karakter. Agar jungkat-jungkit seimbang, jumlah torsi bobot di sebelah kiri jungkat-jungkit harus sama dengan torsi yang ada di kanan, seperti ini .
Memasukkan
3 bilangan bulat di kisaran 1-9. Namun, Anda dapat memasukkan bilangan bulat dengan mudah, misalnya tupel, 3 nilai yang dipisahkan koma, dll. Namun program Anda harus dapat menangani input angka dalam urutan apa pun (mis. Tidak ada asumsi bahwa nilainya akan diurutkan). Nomor duplikat dapat dimasukkan (mis. 2,3,2).
Input akan selalu memungkinkan secara matematis untuk output yang valid, jika tidak input tersebut tidak valid.
Keluaran
Keluaran harus berupa representasi ASCII 2-baris jungkat-jungkit dengan bobot yang ditempatkan di atasnya. Di baris pertama adalah digit, spasi untuk menyeimbangkan mereka di jungkat-jungkit.
Angka mungkin tidak ditempatkan di tengah skala, di mana jarak dan karenanya torsi akan menjadi nol. Jarak yang valid dari rentang pusat dari 1-10 karakter termasuk ke kiri atau kanan pivot.
Di ruang-ruang yang tidak dihuni oleh angka terdapat 18 karakter garis bawah (center garis bawah dan 10 di setiap sisi, minus 3 posisi yang ditempati oleh angka). Pada baris terakhir adalah karakter tanda tunggal yang disejajarkan dengan pusat skala, mewakili pivot.
Contohnya
Memasukkan:
4,7,2
Keluaran:
________7___42_______
^
7 * 2 = 4 * 2 + 2 * 3
Angka dapat berupa output di kedua sisi, misalnya ini juga akan valid:
_______24___7________
^
2 * 3 + 4 * 2 = 7 * 2
Angka dapat ditempatkan di mana saja pada skala selama mereka seimbang, misalnya:
Memasukkan:
3,1,5
Keluaran:
_____5________1__3___
^
5 * 5 = 1 * 4 + 3 * 7
atau
____5________1_____3_
^
5 * 6 = 1 * 3 + 3 * 9
atau
____5___________1_3__
^
5 * 6 = 1 * 6 + 3 * 8
dll
Program Anda hanya perlu meng-output salah satu dari output yang valid. Itu tidak harus menghasilkan kesalahan jika input tidak valid.
Catatan
- Ini adalah kode-golf sehingga program terpendek dalam byte menang
- Program dapat berupa fungsi yang berdiri sendiri atau yang menerima angka sebagai input dan mengembalikan string.
- Mengejar baris baru dan spasi putih di baris terakhir adalah opsional
- Jika Anda tidak tahu apa itu jungkat - jungkit , itu juga dikenal sebagai jungkat-jungkit atau papan jungkat-jungkit.
Jawaban:
CJam,
403938 byteCobalah online.
Bagaimana itu bekerja
sumber
CJam,
4644 byteUji di sini.
Penjelasan
Pertama, sebuah pengamatan: kita tidak perlu meletakkan dua digit di ujung jungkat-jungkit. Setiap kali itu solusi yang valid, setidaknya ada satu solusi valid lainnya (menurut pastebin dalam komentar pada tantangan).
sumber
Java,
519414321 byteUpaya pertama saya bermain golf.
Anda bisa menyebutnya dengan
f(a,b,c)
. Coba di siniEDIT: Digunakan metode pemeriksaan izlin
(a*i+b*j+c*k)==0
EDIT: Terima kasih, J Atkin untuk saran golfnya.
sumber
p
keObject a
dan menggunakannya sebagai pengganti 2System.out.print(ln)
detik lainnya.a
hanya digunakan satu kali, Anda bisa memasukkannya.Pyth,
67585349 byteIni terasa sedikit di sisi besar untuk Pyth, tapi saya hampir tidak cukup akrab dengan bahasa untuk bisa mendapatkan ini jauh lebih kecil.Sub 50 byte, saya akhirnya senang dengan ini!Input diharapkan sebagai array bilangan bulat, misalnya
[1,2,3]
. Coba di sini.Penjelasan:
Dan akhirnya, beberapa contoh input dan output:
sumber
C -
237228 BytesAnda bisa menyebutnya dengan
f(a,b,c)
.Coba di sini .
Output contoh:
sumber
Python 2.7
235226219 BytesMengujinya dengan beberapa contoh dasar -
(1,1,1),(1,2,1),(3,1,5),(4,7,2)
hasil di-:Output untuk semua input yang mungkin disisipkan di sini
sumber
"".join(l) -> 'l'[2::5]
lebih pendek satu byte (ganti tanda kutip dengan backticks).repr
. :)PHP, 278 byte
Solusi brute-force yang menggunakan banyak loop bersarang dan beberapa tes.
Seperti biasa, masukkan ke dalam file (beri nama
seesaw.php
), gabungkan baris (pisah di sini agar mudah dibaca), letakkan penanda PHP (<?php
) di awal file (secara teknis, ini bukan bagian dari program) dan Anda baik untuk pergi.Contoh eksekusi:
Ini menghasilkan dan menampilkan semua solusi (tanpa refleksi), tetapi tidak menghapus duplikat (ketika nilai input mengandung duplikat).
sumber
Julia, 154 byte
Penjelasan + tidak dikumpulkan:
sumber
C, 252 (214) byte
Panggil dengan a, b, c sebagai argumen di baris perintah.
Jika main dapat dinonaktifkan, jumlah byte turun ke 214 untuk suatu fungsi.
Keduanya menggunakan strategi yang sama yaitu menempatkan bobot pertama di sebelah kiri, kemudian memindai di sepanjang posisi bobot kedua yang mungkin dan menghitung bobot ketiga. Ini memungkinkan penghapusan loop dalam.
sumber