Ben sadece alkanlar hakkında okulda bir ders vardı ve muhtemelen büyük bir kod golf meydan okuma yapacak düşündüm! Endişelenme, göründüğü kadar karmaşık değil!
Hızlı Rehash
(Lütfen Dikkat: Bu özeti saklamak için tüm bilgiler% 100 doğru değildir.)
Alkanlar karbon ve hidrojen telleridir. Her karbon atomunun 4 bağı ve her hidrojen atomu 1 bağı vardır. Alkanın tüm karbon atomları, ipin uçları hariç, her bir C atomunun diğer 2 C atomuna (Lewis yapısında sol ve sağ) ve 2 H atomuna (yukarı ve aşağı) bağlandığı bir dize oluşturur. buradaki C-atomu, sadece 1 diğer C'ye, ancak 3H'ye bağlanır. İşte pentan için temel bir örnek (5 C-atomlu ve 12H-atomlu bir alkan):
H H H H H
| | | | |
H-C-C-C-C-C-H
| | | | |
H H H H H
Alkanların da şubeleri olabilir. Ancak endişelenmeyin, bu meydan okumadaki tüm alkanlar sadece 1 dallanma seviyesi ile ifade edilebilir. Misal:
H
|
H-C-H
H H H | H
| | | | |
H-C-C-C-C-C-H
| | | | |
H H H H H
Bu zorluğu tamamlamak için, dallanmış alkanlar için IUPAC adlandırma kuralını da anlamalısınız. İlk önce kök alkan var. Önceki örneğimizde bu, "CCCCC" kısmı olacaktır. Bu zincirin uzunluğuna bağlı olarak, farklı bir adı vardır. 1C, metan, 2C etan, 3C propan, sonra bütan, pentan, heksan, heptan, oktan, nonan ve dekan (10 ° C) olarak adlandırılır. Ardından, her dal için belirli bir önek vardır: Birincisi, dalın eklendiği C-atomunun indeksi (ofseti) vardır (soldan sayın). Örnekte bu 4 olur (yani soldan 4. C atomudur). Sonra bir kısa çizgi (bu sembol: "-") ve bundan sonra dalın boyutunu gösteren başka bir ad var. Dalın boyutunun adlandırılması, kökün boyutunun adlandırılması ile hemen hemen aynıdır, sadece "ane" yerine "yl" ifadesini eklersiniz. Bununla örneğin tam adı
4-methylpentane
Birden fazla dalınız varsa, bunlar da başka bir tire ile ayrılmış olarak eklenir. Misal:
2-butyl-5-methylhexane
Son bir şey: aynı boyutta birden fazla dalınız varsa, gruplandırılırlar; ofsetleri virgülle ayrılır ve aynı boyut adını paylaşırlar, bu da kaç dalın gruplandığına bağlı olarak ekstra hece ile eklenir: 2 dal için "di", 3 için "tri", 4 için "tetra" (siz bu meydan okuma için daha fazlasına gerek yok). Misal:
2-ethyl-2,4,6-trimethyldecane
Bilginize, bu olabilir görünebilir: (Atlanmış H atomları)
|
-C-
| |
-C- -C-
| | | | | | | | | |
-C-C-C-C-C-C-C-C-C-C-
| | | | | | | | | |
-C- -C-
| |
İsimlendirme Hileleri
Prefixes indicating numbers:
| Num | Prefix |
|------|--------|
| 1 | meth |
| 2 | eth |
| 3 | prop |
| 4 | but |
| 5 | pent |
| 6 | hex |
| 7 | hept |
| 8 | oct |
| 9 | non |
| 10 | dec |
Suffix root: ane
Suffix branch: yl
Prefixes grouping: di, tri, tetra
Kurallar
STDIN, program argümanları veya eşdeğerinden böyle bir IUPAC adını okuyan ve ASCII-art lewis yapısı olarak STDOUT'a (veya eşdeğerine) çizen bir program yazın.
- Basitlik için, H atomlarını çizmeniz GEREKMEZ (Başka türlü boşluk sorunlarıyla karşılaşırsınız)
- Boş ön veya arka yatay çizgiler basmanıza izin VERİLMEZ
- Ayrıştırmanız gereken zincirler 10'dan daha uzun olmayacak ve bir "grup" daki dalların maksimum sayısı 4 ile sınırlandırılacaktır.
- Bir dalın maksimum "ofseti" 9'dur (yani 1 basamaktan fazla ayrıştırmanız gerekmez)
- Şubeleriniz her yeni branştan sonra yukarı ve aşağı gitmek arasında değişmelidir. Bu alanın aynı ofsetteki başka bir dal tarafından zaten alınmış olması durumunda, kökün diğer tarafına çizmeniz gerekir. (yukarı-> aşağı, aşağı-> yukarı)
- Bozuk, doğru biçimlendirilmemiş veya başka bir şekilde çizilemeyen girdilerde, programınız belirtilmemiş davranabilir.
Bu kod golf, bayt kazanır en kısa kod kazanır!
Mutlu golf! :)
3-3-5-7-methyldodecane
, en uzun sürekli karbon zincirinin 12 uzun olmasıdır. Ayrıca, sorudaki tüm bilgilerin doğru olmadığını söylediniz, ancak bence ikinci molekülün karbona en yakın dallanma ile başladığınız için 2-methylpentane
değil 4-methylpentane
.
Your branches have to alternate between going up and down after every new branch.
örneğiniz bu kuralı ihlal ediyor 2. Desteklememiz gereken maksimum zincir uzunluğu nedir (öneklerin ayrıştırılması zorluğun bir parçası olacaktır.) Bir isimlendirme listesini bağlamalısınız (veya tercihen kopyalamalısınız).
4-methylpropane
demek4-methylpentane
?4-<anything>propane
bir şeyi tamamen yanlış anlamadığım sürece olası görünmüyor.