Buat program yang mengambil satu argumen baris perintah,, n
yang akan menjadi bilangan bulat kurang dari 2147483648 (2 ^ 31), dan kemudian membaca file input.txt
dan mencetak baris input.txt
yang berisi substring yang merupakan beberapa substring yang positif (tidak nol) berganda dari n
. Anda dapat memilih untuk mengabaikan kelipatan lebih besar dari 2147483647.
Kasus cobaan
Jika input.txt
berisi
1. Delaware Dec. 7, 1787
2. Pennsylvania Dec. 12, 1787 1682
3. New Jersey Dec. 18, 1787 1660
4. Georgia Jan. 2, 1788 1733
5. Connecticut Jan. 9, 1788 1634
6. Massachusetts Feb. 6, 1788 1620
7. Maryland Apr. 28, 1788 1634
8. South Carolina May 23, 1788 1670
9. New Hampshire June 21, 1788 1623
10. Virginia June 25, 1788 1607
11. New York July 26, 1788 1614
12. North Carolina Nov. 21, 1789 1660
13. Rhode Island May 29, 1790 1636
14. Vermont Mar. 4, 1791 1724
15. Kentucky June 1, 1792 1774
16. Tennessee June 1, 1796 1769
17. Ohio Mar. 1, 1803 1788
18. Louisiana Apr. 30, 1812 1699
19. Indiana Dec. 11, 1816 1733
20. Mississippi Dec. 10, 1817 1699
21. Illinois Dec. 3, 1818 1720
22. Alabama Dec. 14, 1819 1702
23. Maine Mar. 15, 1820 1624
24. Missouri Aug. 10, 1821 1735
25. Arkansas June 15, 1836 1686
26. Michigan Jan. 26, 1837 1668
27. Florida Mar. 3, 1845 1565
28. Texas Dec. 29, 1845 1682
29. Iowa Dec. 28, 1846 1788
30. Wisconsin May 29, 1848 1766
31. California Sept. 9, 1850 1769
32. Minnesota May 11, 1858 1805
33. Oregon Feb. 14, 1859 1811
34. Kansas Jan. 29, 1861 1727
35. West Virginia June 20, 1863 1727
36. Nevada Oct. 31, 1864 1849
37. Nebraska Mar. 1, 1867 1823
38. Colorado Aug. 1, 1876 1858
39. North Dakota Nov. 2, 1889 1812
40. South Dakota Nov. 2, 1889 1859
41. Montana Nov. 8, 1889 1809
42. Washington Nov. 11, 1889 1811
43. Idaho July 3, 1890 1842
44. Wyoming July 10, 1890 1834
45. Utah Jan. 4, 1896 1847
46. Oklahoma Nov. 16, 1907 1889
47. New Mexico Jan. 6, 1912 1610
48. Arizona Feb. 14, 1912 1776
49. Alaska Jan. 3, 1959 1784
50. Hawaii Aug. 21, 1959 1820
kemudian find_multiples 4
akan mencetak seluruh file, dan find_multiples 40
akan mencetak
10. Virginia June 25, 1788 1607
17. Ohio Mar. 1, 1803 1788
21. Illinois Dec. 3, 1818 1720
32. Minnesota May 11, 1858 1805
40. South Dakota Nov. 2, 1889 1859
41. Montana Nov. 8, 1889 1809
code-golf
math
arithmetic
ojblass
sumber
sumber
33. Oregon Feb. 14, 1859 1811
? Apakah itu4
dalam14
, menyiratkan bahwa pertandingan itu melawan substring daripada string digit yang dibatasi oleh non-digit atau akhir baris?Jawaban:
Perl, 67 karakter
Harap dicatat bahwa jumlah karakter yang diberikan mengambil keuntungan dari salah satu fitur Perl yang lebih mengerikan, yaitu bahwa variabel khusus dari formulir
$^X
dapat ditulis dalam dua karakter, bukan tiga, dengan mengganti^X
dengan karakter ctrl- X literal .Dan, tentu saja, solusi ini tidak akan mungkin tanpa beberapa ekstensi regex Perl yang bisa dibilang sama-sama menakutkan yang memungkinkan seseorang untuk menanamkan kode aktual di dalam pola regex. (Tapi setidaknya fitur-fitur itu jelas didokumentasikan sebagai berpotensi menakutkan.)
[Diedit untuk memperbaiki bug dalam penanganan argumen karena tidak membaca deskripsi dengan cukup hati-hati.]
sumber
input.txt
.Mathematica
f
menghapus semua non-digit;g
menemukan semua angka yang dapat ditemukan dalam satu baris tanggal.h
memeriksa untuk melihat apakah Mod [x, n] benar untuk semua nomor yang dikembalikan olehg
.w
memanggil subrutin dan memformat output.Contohnya
sumber
dates={"1. Delaware Dec.7,1787"}
Lalu cobaw[17]
. Itu harus mengembalikan baris informasi yang sama.dates = {"1. Delaware Dec.7,1787",...}
laluExport["input.txt",dates]
. Anda gunakanImport["input.txt", dates]
untuk mendapatkannya kembali.Q, 94
Tidak diragukan lagi ada cara yang lebih anggun untuk menemukan substring dalam q.
.
sumber
Ruby 2.0, 129 karakter
Dengan bantuan dari @ sync:
Garis panjang itu terpecah sedikit:
Contoh:
sumber
IO.foreach('input.txt'){|l|puts l if l.scan(/\d+/).any?{|a|(0..s=a.size).any?{|i|(1..s).any?{|j|(v=a[i,j].to_i)%n<1&&v>0}}}}
Saya suka#combination
tapi itu kata yang panjang!$
variabel, jadi sekarang hampir terlihat seperti perl!n
perlu arg baris perintah daripada nilai yang dibaca dari stdin. Jadi, Anda dapat menghapus baris pertama sepenuhnya dan menggantin
di baris kedua dengan$*[0].to_i