Kaynağım uygun, senin mi?


14

Zorluk, geçirilen dizenin "sırayla" olup olmadığını hesaplayan bir program, işlev vb. Yazmaktır. Bu, dizenin karakterlerinin en küçükten en büyüğe doğru olan karakter kodlarına sahip olduğu anlamına gelir. En küçük karakter kodu ilk olmalıdır. Bununla demek istediğim en yüksek Unicode kod puanları. Dilinizin hangi kod sayfasını kullandığı önemli değildir.

Giriş "sırayla" ise bir değer, değilse de başka bir değer döndürmeniz gerekir. Değerler farklı olmalıdır, ancak çıktı değerlerinde başka bir kısıtlama yoktur. Örneğin, / getiri / çıkış yazdırabilirsiniz trueiçin !1AQaq¡±(sırayla) ve falseiçin aq!QA. İki farklı değerin doğru ya da yanlış olması ya da bunun gibi bir şey olması gerekmez, sadece iki ayrı değer. Tekrarlanan dizeler (örn. aa) Sırayla.

Yalnızca unicode U+007E( ~) 'a kadar desteklemeniz gerekir (ascii 126)

Ancak, programınızın karakterlerinin kendisi de sıralı olmalıdır. İyi şanslar ve mutlu ing!


Doğruluk / sahtelik değerlere ihtiyacınız yok mu? iki hakikat işe yarar mı?
Rɪᴋᴇʀ

Ayrıca, en küçük karakter her zaman ilk karakterde mi? Yoksa tersine çevrilebilir mi?
Rɪᴋᴇʀ

12
Code-golf dürüstçe bu kısıtlı kaynak biçimi için kötü bir kazanç koşulu gibi görünüyor. Çoğu benzersiz karakter için kod bowlingi daha ilginç olurdu.
fəˈnɛtɪk

1
@Pavel Pop eksileri, belirli bir görevi belirli bir şekilde gerçekleştirmek için iyi çalışmaz.
Dennis

2
dize sırayla nedir? örneğin, "aa"sırada mı?
tsh

Yanıtlar:


14

Brachylog , 2 bayt

.o

Çevrimiçi deneyin!

açıklama

.o
.   Assert that {the input} equals the output of the last command in the program
 o  Sort {the input}

Tam bir program olarak, bir beyan hatası verir false., herhangi bir iddiayı ihlal etmeyen başarılı bir çalışmatrue.


9

Jöle , 2 bayt

Ṣ⁼

Çevrimiçi deneyin!

açıklama

Ṣ⁼
Ṣ    Sort {the input}
 ⁼   Compare that to {the input} for equality of the whole structure

⁼Ṣ Ayrıca doğru işlevselliğe sahiptir ("girişi sıralı girdiyle karşılaştırın"), bu yüzden sırayla hangisi olduğunu anlamak için kendi başlarına iki programı çalıştırmanın bir örneğiydi (Kesinlikle bu bölümün Unicode kod noktalarına sahip değilim) Jelly'in tuhaf karakter kümesi ezberlendi).


Jelly kodlamasında gönderiminiz yanlış, bunun ⁼Ṣyerine olması gerekiyor . Jelly'in kod sayfasını burada görebilirsiniz .
Outgolfer Erik

@EriktheOutgolfer Bu kolayca düzeltilebilir; ⁼Ṣtam olarak aynı şeyi yapar Ṣ⁼.
steenbergh

@steenbergh Bu gönderi şu an olduğu gibi geçersiz. Düzeltme kolay olsa da, henüz uygulanmadı ve başkalarının kodu düzenlemesi önerilmez.
Erik the Outgolfer

1
@EriktheOutgolfer Bu yanıtla ilgili tartışma esas olarak hangi kod sayfasının kullanılacağıyla ilgilidir: meydan okuma Unicode'a başvurur (ancak açıkça kullanmamızı söylemez) ve Jelly'in kendi kod sayfası vardır. Sonuç ne olursa olsun, bu cevabı düzeltmek önemsizdir. Bu nedenle, bu cevabı 'geçersiz' olarak adlandırmak kadar ileri gitmezdim - şimdiki durumunda bile aşağıya vurmam.
steenbergh

@steenbergh Ben de düşürmedim, sadece ais523 bildiriyordum :)
Erik the Outgolfer

9

MATL , 5 bayt

GGS\a

0Girdi düzgünse çıkış yapar 1.

Çevrimiçi deneyin!

açıklama

Bu, girişten her bir karakterin (kod noktaları) modülünü, sıralanmış girdideki aynı dizindeki modülle hesaplar. Giriş yalnızca ve tüm sonuçlar için geçerlidir 0.

Örneğin, giriş dizesini düşünün BCD!. Sıralama yapar '!BCD. Kod noktalarının dizileri sırasıyla [66 67 68 33]ve [33 66 67 68]. Modülleri hesaplamak [0 1 1 33], böylece girdi düzgün değildir. 0Değerler aynı olmasa bile bazı sonuçların nasıl olabileceğine dikkat edin (burada ilk pozisyonda olur), ancak giriş düzgün olmadığı sürece tüm kayıtlarda bu olamaz .

G     % Push input string
GS    % Push input string and sort it
\     % Modulus, element-wise. This gives all zeros iff the input was in order
a     % Any: gives 1 if any entry is non-zero. Implicitly display

8

05AB1E , 3 2 bayt

Kevin'e kaynak kodumun% 33'ünü kestiği için teşekkürler!

Çevrimiçi deneyin!

Açıklama:

      There used to be a D here for 'Duplicate stack' 
      but we now use the same input twice implicitly
 {    Sort the copy
  å   Check if the sorted copy is a substring of the original
      This will only return 1 if the original input is sorted, 0 otherwise.

D{Qayrıca çalışıyor ...
Neil A.

1
@ NeilA.Bunu da yapabilir, ancak karakterler sıralı değil. Gereksinim, kaynak kodunuzun verilerle aynı testi geçmesidir. Bu 1 verir .
steenbergh

1
DSadece bir kapalı giriş iki kez kullanarak -1 için çıkarılabilir.
Kevin Cruijssen


5

2 kablo , 2 bayt

Çevrimiçi deneyin!

açıklama

{    # sorted input
 Ê   # not equals (implicit input)

Sıralıysa 0 , başka 1 verir .


1
@steenbergh: Ah, mücadelenin bu bölümünü kaçırdı.
Emigna

1
@steenbergh: Düzeltildi! Neyse ki farklı değerler verebiliriz :)
Emigna

2

Pyth, 2 bayt

<S

Falsesıralı, Truesıralanmamış anlamına gelir.

Test odası

Bu, gelmesi oldukça önemsizdi. Kısıtlı kaynak olmadan bu soruna en açık çözüm SI, sıralama altında değişmezdir. Ama bu sıralanmamış. Sonra qS, girdi değişkenini örtülü olarak iki kez kullanan, sıralı benliğine eşit olup olmadığını kontrol ettim. Ama ederken q < s, q > Sbu yüzden da işe yaramadı. Ancak <daha önce gelir Sve sıralanan sürümün orijinalinden daha az olamamasının tek yolu, orijinalin sıralanmasıdır, çünkü sıralanan sürüm öğelerin sözlükbilimsel olarak en az permütasyonudur.


1

CGL (CGL Golf Dili) , 4 bayt (rakip olmayan)

-:Sc

Açıklama:

- Decrement the stack counter so the current stack is where input is put
: Split the first element of the current stack (input) into an array of single strings, make that the next stack, and increment the stack counter
S Sort the current stack
c Compare the current stack and the one before, push that to the next stack and increment the stack counter
(implicit) Output the first element of the current stack, true if in order, false if not.

Rakip olmayan çünkü :, Sve cbu meydan okuma oluşturulduktan sonra uygulandı.


Bu dilin bu meydan okumadan önce yaratıldığının kanıtı var mı?
user41805

@KritixiLithos evet, ve teknik olarak geçerli bir dildir, ancak bunu rekabet etmeyeceğim, çünkü bunu tamamlamak için gerekli işlevler bu zorluktan sonra yapıldı. CGL hala devam eden bir çalışmadır ve bana hangi yeni işlevlerin eklenmesi gerektiğini göstermek için zorluklar kullanıyorum.
programmer5000
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.