Seorang pria memiliki dua perangkat.
- Mesin waktu - Dia dapat mengendalikan mesin ini dengan berpikir. Ini memungkinkan dia untuk melakukan perjalanan dari titik waktu ke titik waktu di masa lalu atau masa depan (atau bahkan saat ini dalam waktu) dalam waktu singkat. Perhatikan bahwa jika ia melakukan perjalanan ke masa lalu dari B ke A, maka semua kejadian normal (mesin waktu, alternator dikecualikan) dari A ke B harus diulang dengan cara yang sama persis. Kemudian dari titik B, ia dibawa kembali ke titik A. Dengan demikian, perjalanan waktu tunggal menciptakan loop tak terbatas.
- Alternator - Menyadari masalah ini, ia menciptakan mesin lain. Dia memperhatikan bahwa, meskipun semua peristiwa fisik berulang dalam satu lingkaran, pikirannya mungkin berbeda. Karenanya mesin ini dirancang untuk dapat dikendalikan oleh pikiran juga. Mesin dapat digunakan kapan saja untuk memberikan masa depan alternatif (tetapi tidak masa lalu) sehubungan dengan waktu dia menggunakannya.
Contoh
Saya akan menjelaskan semua detail menggunakan contoh panjang.
1000 T+250 250 T+0 500 T-200 100 T-50 125 A 225 T-400 500 A 100 T-200 150 T-25 100 T+100 50 A 25
- 1000 tahun berlalu. Sekarang tahun 1000.
- Ia melakukan perjalanan dari 1000 ke 1250.
- 250 tahun berlalu. Sekarang tahun 1500.
- Ia melakukan perjalanan dari 1500 ke 1500. Ini tidak memiliki efek (dan dapat diabaikan).
- 500 tahun berlalu. Sekarang tahun 2000
- Ia melakukan perjalanan dari 2000 ke 1800.
- 100 tahun berlalu. Sekarang tahun 1900.
- Ia melakukan perjalanan dari tahun 1900 hingga 1850.
- 125 tahun berlalu: Namun, kali ini, saat ia berada dalam satu lingkaran, segalanya berbeda. 50 tahun berlalu dari tahun 1850 hingga 1900. Dia kembali ke tahun 1850. 50 tahun lagi berlalu dari tahun 1850 hingga 1900. Dia kembali ke loop lagi. 25 tahun berlalu dan ini adalah tahun 1875, dengan demikian menyelesaikan 125 tahun.
- Dia menggunakan alternator. Sekarang ada masa depan alternatif untuk tahun 1875, di mana dia sekarang. Masa lalu tidak berubah.
- 225 tahun berlalu. Sekarang tahun 2100.
- Ia melakukan perjalanan dari 2100 hingga 1700.
- 500 tahun berlalu: 175 tahun dari 1700 hingga 1875 berlalu secara normal. Tidak, dia bertemu dengan alternator lagi, yang berarti bahwa sekarang masa depan ke - 3 telah dibuat pasca-1875. 325 tahun berlalu secara normal, menjadikannya tahun 2200.
- Menggunakan alternator sekarang tidak memiliki efek (dan dapat diabaikan) karena hanya ada satu masa depan hingga 2200 yang belum didefinisikan.
- 100 tahun berlalu. Sekarang 2300.
- Ia melakukan perjalanan dari 2300 hingga 2100.
- 150 tahun berlalu: 100 tahun dari 2100 hingga 2200 berlalu secara normal. Masa depan kedua akan dibuat dari 2200. 50 tahun berlalu dan sekarang tahun 2250.
- Dia seharusnya pergi dari 2250 ke 2225. Namun, sekarang ada dua 2225 di dua garis waktu yang berbeda. Karena itu, hal ini mengarah pada paradoks, karena kita tidak dapat menentukan titik waktu yang akan dicapai. (Kami tidak akan menganggap bahwa ia pergi ke timeline yang lebih baru) Oleh karena itu ini mengakhiri simulasi kami.
- Apa pun lebih jauh
100 T+100 50 A 25
sepenuhnya diabaikan sejak paradoks telah terjadi dan simulasi kami telah berhenti berjalan.
Petunjuk: Jika Anda berjuang untuk memahami contoh, bayangkan waktu menjadi seperti jalan yang Anda gali di bumi. Jika Anda bepergian waktu, Anda membuat teleporter. Jika Anda menggunakan alternator, Anda sedang menggali jalur baru ke dinding jalur yang ada.
Paradoks
Asumsikan A, B dan C adalah tiga titik waktu (satu demi satu). Suatu paradoks dikatakan telah terjadi jika:
- Anda berada di titik C, ada alternator di titik B, ada lebih dari satu masa depan ke titik B (dan Anda berada di salah satu dari mereka), dan Anda berupaya mengakses titik mana pun antara B dan C melalui perjalanan waktu.
- Anda berada di titik A, ada alternator di titik B, ada lebih dari satu masa depan ke titik B, dan Anda mencoba mengakses titik C (setelah B) melalui perjalanan waktu.
Memasukkan
Serangkaian acara, mirip dengan contoh. (Format fleksibel.)
Keluaran
Nilai kebenaran / kepalsuan, menunjukkan apakah suatu paradoks telah terjadi.
Tantangan
Kode terpendek (dalam byte) menang.
flexible
denganformat
?Jawaban:
Ruby,
510460 byteMemasukkan
Sebagai contoh
Keluaran
0 = Tidak Paradox, 1 = Paradox
Sampel
Input sampel yang disediakan:
1000 T+250 250 T+0 500 T-200 100 T-50 125 A 225 T-400 500 A 100 T-200 150 T-25 100 T+100 50 A 25
pengembalian1
, menunjukkan terjadi paradoks.Catatan
Ini bukan hanya latihan codegolf pertama yang saya coba, tetapi juga merupakan program Ruby pertama yang saya tulis. Oleh karena itu, mungkin bisa lebih pendek.
Penjelasan singkat
Loop tak terbatas hanya akan terjadi saat bergerak maju dalam waktu. Saya senang atas tanggapan apa pun - terutama jika ini menunjukkan cara yang lebih baik untuk menyelesaikan masalah ini.
sumber
then
itu tidak perlu dan dapat dihapus. Selain itu, Anda harus menggunakan{...}
alih-alihdo...end
menyimpan lebih banyak karakter.map
menyimpan byte lebiheach
, dansplit
terbagi pada spasi putih secara default. Empat baris inisialisasi pertama dapat disingkat menjadip=[];w=[n=x=0]
.05AB1E ,
93928682 byteInput dalam format yang sama seperti dalam deskripsi tantangan, kecuali alternator itu
A
adalahabcdefghijklmnopqrstuvwxyz
bukan untuk menyimpan byte.Keluaran
1
jika terjadi paradoks, atau input itu sendiri jika tidak (hanya1
kebenaran di 05AB1E, yang lainnya falsey).Secara longgar berdasarkan jawaban Java 10 saya .
Cobalah online.
Atau coba online dengan menambahkan garis-debug ( TODO: Buat suite uji yang tepat dengan semua kasus uji sekaligus .. ):
- Uji kasus dengan paradoks perjalanan waktu mundur: Cobalah online.
- Uji kasus dengan paradoks perjalanan waktu ke depan: Cobalah secara online.
- Uji kasus tanpa paradoks perjalanan waktu: Cobalah secara online.
Penjelasan:
sumber
Java 10,
498485478 byteInput adalah (untuk saat ini) dalam format yang sama seperti pada deskripsi tantangan.
-13 byte terima kasih kepada @BenjaminUrquhart .
-7 byte terima kasih kepada @ceilingcat .
Cobalah online atau coba online dengan menambahkan garis-debug .
Penjelasan:
sumber
Long
?int
lebih pendek, tapi itu memberikan kesalahan dengan peta-Entri keyvalue-pasangan. Tidak berpikir tentang mengubah segalanya menjadi Lama setelah itu .. Terima kasih untuk -13!