Biorąc pod uwagę nazwę kationu i anionu, wyjmij „S” (rozpuszczalny) lub „I” (nierozpuszczalny). Stół, którego będziemy używać, pochodzi z wikipedii: https://en.wikipedia.org/wiki/Solubility_chart . Jest on kopiowany na końcu pytania do wykorzystania w przyszłości.
Wkład : kation, po nim anion, oddzielone spacją. Kation będzie jednym z następujących:
Lithium Sodium Potassium Ammonium Beryllium Magnesium Calcium
Strontium Barium Zinc Iron(II) Copper(II) Aluminium Iron(III) Lead(II) Silver
a anion będzie jednym z następujących:
Fluoride Chloride Bromide Iodide Carbonate Chlorate Hydroxide Cyanide Cyanate
Thiocyanate Nitrate Oxide Phosphate Sulfate Dichromate
Każda litera będzie pisana wielką literą.
Przykładowe dane wejściowe: Sodium Chloride
Wyjście : wartość truthy, albo S
, jeżeli jest rozpuszczalna falsey lub I
inaczej. Jeśli na stronie wikipedii znajduje się coś jeszcze (np. Słabo rozpuszczalny lub reaguje z wodą) lub jeśli dane wejściowe nie są w postaci „kationu anionowego”, twój program może zrobić cokolwiek (niezdefiniowane zachowanie), więc może wypisać „S”, „ Ja ”lub cokolwiek innego.
Stół:
?,S,S,S,?,S,S,S,?,S,S,?,I,S,S
S,S,S,S,S,S,S,S,S,S,S,?,S,S,S
S,S,S,S,S,S,S,S,S,S,S,?,S,S,S
S,S,S,S,S,S,S,S,?,S,S,?,S,S,S
S,S,S,?,?,?,?,?,?,?,S,?,?,S,?
?,S,S,S,I,S,I,?,?,?,S,I,I,S,I
I,S,S,S,I,S,?,S,?,?,S,?,I,?,I
?,S,S,S,I,S,S,?,?,?,S,?,?,I,?
?,S,S,S,I,S,S,S,?,?,S,?,?,I,?
?,S,S,S,I,S,I,I,?,?,S,I,I,S,I
S,S,S,S,I,S,I,?,?,?,S,I,I,S,I
?,S,S,?,I,S,I,?,?,I,S,I,I,S,I
S,S,S,?,?,S,I,?,?,?,S,I,I,S,I
?,S,S,?,?,S,I,?,?,?,S,I,I,?,I
?,?,?,I,I,S,I,?,?,?,S,I,I,I,?
S,I,I,I,I,S,?,I,I,?,S,?,I,?,I
Rzędy są kationami w podanej wyżej kolejności, a kolumny to aniony. Na przykład, ponieważ jodek magnezu jest rozpuszczalny, a magnez był 6. kationem, a jodek był 4. anionem, 6. rząd i 4. kolumna mają znak „S”. ?
Wskazuje niezdefiniowanej zachowanie.
źródło
?
s daje dużą swobodę w wyborze algorytmów.kolmogorov-complexity
znacznika wyzwanie nie wymaga podania tabeli, ale prawidłową wartość dla danej pary (kation, anion).truthy
/'S'
lubfalsy
/'I'
?Odpowiedzi:
JavaScript (Node.js) , 143 bajty
Zwraca 1 dla rozpuszczalnego, 0 dla nierozpuszczalnego.
Wypróbuj online!
W jaki sposób?
Konwersja ciągu wejściowego na indeks wyszukiwania
Najpierw budujemy klucz, wyodrębniając od 2 do 7 znaków anionu i dodając dwie pierwsze postacie kationu:
Przykłady:
Przekształcamy to w indeks wyszukiwania, analizując go w bazie 35 i stosując modulo 1325, a następnie modulo 508 (wartości wymuszone metodą brute):
Kompresja tabeli odnośników
Ponieważ istnieje znacznie więcej par rozpuszczalnych niż nierozpuszczalnych , wypełniamy wszystkie nieużywane wpisy w wyszukiwaniu rozpuszczalnym .
Kodując rozpuszczalne z 1 i nierozpuszczalne z 0 , nasza tabela odnośników składa się zasadniczo z długich ciągów 1 , po których następuje 0 :
Kompresujemy go, przechowując długości ciągów 1 jako znaki ASCII w zakresie [32-126] .
źródło
Rubin
-n
,969275706965 bajtówWypróbuj online!
Nie jestem zbyt dobry w generowaniu skrótów i tabel odnośników, więc zamiast tego zdecydowałem się skorzystać ze wszystkich symboli wieloznacznych ze znakiem zapytania, aby uprościć logiczną strukturę tabeli, a następnie zastosować czystą magię Regex.
Aktualizacja : zmienione przypisanie niektórych znaków zapytania i jeszcze bardziej uprościło logikę dopasowywania.
Aktualizacja 2 : Zaledwie 2 miesiące później wymyśliłem kolejną zmianę tabeli, aby zaoszczędzić jeszcze kilka bajtów.
Tabela, którą będziemy produkować, wygląda następująco:
Teraz następujące związki można uznać za rozpuszczalne:
ra
Nit ra te, Chlo ra te[SPm]o
Więc DIUM, Po tassium Am mo nium^[^C]*F
F luoride, nie C alcium lub C opperh.*D
Lit h ium D ichromateZ pozostałych związków nierozpuszczalne są:
Le
Le ad[MAIZ]i.*y
M agnesium, luminium, że Ron (i innych kationów ze wskazanym za), Z związki inc z bloku anionów zawierających (H r droxide-Thioc Y anate)y
[OPDFbv]
O xide , P hosphate, D ichromate, F luoride, Car b onate, Sil v er[tr]i.*S
Stron ti um i Ba ri um S ulfatesWszystko inne jest rozpuszczalne.
źródło
Python 2 ,
166161131 bajtówWypróbuj online!
źródło
Python 2 ,
180177151149147 bajtówWypróbuj online!
źródło
17*(b%91%61%17)%272
nie byćb%91%61%17*17%272
?Pascal (FPC) ,
387358353348341319297 bajtówWypróbuj online!
Wyjaśnienie:
źródło
Galaretka ,
67 61 60 50 4744 bajtówMonadyczny link zwracający listę, która jest pusta dla
I
i niepusta dlaS
(w Galaretce puste listy są falsey, podczas gdy niepuste są prawdziwe).Wypróbuj online! (stopka
”S”IÇ?
toif LastLink(x) is Truthy then "S" else "I"
)Lub zobacz wszystkie przypadki sformatowane jako siatka pasująca do kolejności siatki w PO.
W jaki sposób?
Po utworzeniu zestawów danych wejściowych, które muszą być,
S
iI
ocenieniu tych danych wejściowych jako podstawy dziesięciu (Python:)dec=lambda s:sum(10**i*ord(c) for i, c in enumerate(s[::d]))
oraz użyciu kilku pętli wartości modulowania i sprawdzania zestawu znaleziono tu używany skrót.Nierozpuszczalne kluczowe liczby całkowite są tworzone w kodzie przez oszacowanie liczby całkowitej zakodowanej w podstawie 250, przekształcając ją w podstawę
25 ... 16* ... 10 i sumowanie wyniku łącznie ...* podstawowe redukcje zostały osiągnięte poprzez dodanie niektórych redundantnych kluczy
źródło