Sporadik Shift Tuşu ile Programlama


39

Klavyenizde bir sorun var. ShiftAnahtar kendine ait bir aklı var. Her karakter yazdığınızda, değişip değişmeyeceği konusunda hiçbir fikriniz yoktur (50-50 olmasına rağmen). Standart karakter tuşlarının yanı sıra, klavyedeki hiçbir şey işlevsel değildir. Fare ya da başka girdi araçları yoktur.

Her nasılsa işleri düzeltmenin tek yolunu biliyorsun Dear Computer, please stop giving me shift!stdout'a çıkan bir program yazmak . Neyse ki IDE'niz açık ve bir program çalıştırabiliyorsunuz, ama elbette yazdığınız sırada hangi karakterlerin değiştirileceğini bilemeyeceksiniz.

İlk denemede mümkün olan en iyi çalışma şansına sahip olan bir programı yazmak için hangi anahtar presler dizisini kullanırsınız?

ayrıntılar

Bir kullanıyorsunuz standart QWERTY klavye , böylece basabilirsiniz 50 karakter tuşları vardır.

Değiştirilmemiş sürümler (yalnızca 47):

`1234567890-=qwertyuiop[]\asdfghjkl;'zxcvbnm,./

Değişen versiyonlar (sadece 47):

~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>?

Son 3 anahtarları Enter, Tabve Spaceaynı kaydırılır ve kaydırılmamış olan,.

Bu karakterlerin N dizisinde, hatalı klavyenizle yazmış olsaydınız, çıkmış olabileceği 2 N - (boşluk karakter sayısı) vardır . Örneğin, yazarak A Space mvermiştir olabilir a mveya A mveya a Mveya A M.

Bu karakterleri bir program yazın ve 2 N - (boşluk karakter sayısı) olası kaydırma kombinasyonlarına bakın. Ne kadar çok kombinasyon o Dear Computer, please stop giving me shift!kadar iyi sonuç verir. Puanınız, toplam kombinasyon sayısına bölünen çalışan kombinasyon sayısıdır (geçerli programlar). En yüksek puan kazanır.

notlar

  • Geçerli programlar için, tam olarak yazdırmak Dear Computer, please stop giving me shift!ve stdout'tan başka hiçbir şey tek yan etki olmamalıdır.
  • Geçerli programlar giriş yapmamalıdır.
  • Geçersiz programlar herhangi bir şeyi yapabilir.
  • Yorumlar herhangi bir yerde kullanılabilir.
  • Boşluk cevapları kazanamaz çünkü% 100 puan almak (nispeten) önemsizdir. Eğlence için hala bir Whitespace çözümü sunabilirsiniz.
  • Programınız en fazla 1024 karakter uzunluğunda olmalıdır.

Güncelleme: Değiştirilen Stop giving me shift!için Dear Computer, please stop giving me shift!daha karmaşık cevaplar için izin vermek. Mevcut cevaplar istenirse aynı şekilde kalabilir.


2
+1, bu çok zor, ama keşke bize daha uzun bir çıktı dizisi verseydiniz. Birkaç akıllı numara düşündüm, ama hepsi tanıdığım tüm dillerde 18'den fazla karakter alıyor.
Nathaniel,

2
@ Calvin's Hobbies ama ... peki şimdiki cevaplar?
John Dvorak

1
@ Calvin'sHobbies Değil! Ve 1024 sınırlaması da bunu çok iyi önlüyor. Bütün bunlara rağmen, sorduğum ne olduğu belli değil. Lütfen cevapların çoğuna dezavantaj sağlayan özellikleri değiştirmeyin
Doktor

1
@ Calvin's Hobbies Çok kötü, 1024 karakter sınırı var. Cevabımı tekrar gözden geçirmem gerekecek ...
Justin,

1
@Optimizer En azından kazanamayacaklar.
jimmy23013

Yanıtlar:


46

Applescript, 2 0 (% 100)

Burada mükemmel bir puan alabileceğime inanıyorum:

  • Applescript Editor (IDE) derleme / çalıştırmada tüm anahtar kelimeleri otomatik olarak küçük harfe dönüştürür
  • Ayrıca, tanımlanan değişkenin ve işleyici isimleri harf duyarsız olan - bir işleyici Örneğin myFunctanımlanır, daha sonra IDE otomatik olarak dönüştürür MYFUNC, myfunc, MyFuNcvb referanslarmyFunc
  • Sadece alfabetik karakterler, boşluklar ve yeni satırlar kullandım, bu yüzden kaymış sayılar ve noktalama işaretleri hakkında endişelenmeme gerek yok.

İşte:

global f
on j at a
set end of a to j
end
on c at a
j at a
j at a
end
on k at a
repeat with q in system info
j at a
end
end
on w at a
set d to count a
j at a
return string id d
end
on z at a
set end of f to a
end
set h to space
set y to h as list
k at y
k at y
set x to w at y
c at y
c at y
c at y
c at y
c at y
set q to w at y
k at y
c at y
c at y
copy y to b
c at y
set s to w at y
set d to w at y
set f to d as list
k at b
k at b
set a to w at b
c at b
j at b
set e to w at b
set y to w at b
set g to w at b
set d to w at b
set i to w at b
c at b
set l to w at b
set m to w at b
set n to w at b
set o to w at b
set p to w at b
j at b
set r to w at b
z at e
z at a
z at r
z at h
z at s
set s to w at b
set t to w at b
set u to w at b
set v to w at b
z at o
z at m
z at p
z at u
z at t
z at e
z at r
z at q
z at h
z at p
z at l
z at e
z at a
z at s
z at e
z at h
z at s
z at t
z at o
z at p
z at h
z at g
z at i
z at v
z at i
z at n
z at g
z at h
z at m
z at e
z at h
z at s
z at d
z at i
z at y
z at t
z at x
f as text

@Kernigh ve @paradigmsort'un yardımı sayesinde, bu şimdi 1020 bayttır, sadece 1024 bayt sınırının altında gıcırdıyor!

Açıklama:

  • Çıkış dizgisi string id <n>karakterleri, ascii değerine karşılık gelen karakteri döndüren kullanılarak oluşturulur.n
  • Rakamlardan kaçındığımız için, her nbirinin daha temel yollarla üretilmesi gerekiyor. Özellikle, her birini nbir liste sayarak ve sonra o listeye başka bir madde ekleyerek oluştururuz. Her zaman 16 maddelik bir liste döndürdüğü için repeat with q in system info, bunu 16 defa yapmamızı sağlar system info.
  • Benzer bir teknik kullanarak, son dizenin her karakterini sırayla listeye ekleriz.
  • Sonunda bu son liste zorlanır textve yazdırılır.

Çıktı:

osascriptTercümanı kullanma , ancak Applescript Editor aynı zamanda çalışır:

$ # Interpret as-is:
$ osascript dearcase.scpt
Dear Computer, please stop giving me shift!
$ 
$ # Interpret all lower case:
$ tr A-Z a-z < dearcase.scpt | osascript
Dear Computer, please stop giving me shift!
$ 
$ # Interpret all upper case:
$ tr a-z A-Z < dearcase.scpt | osascript
Dear Computer, please stop giving me shift!
$
$ # Interpret random case for each letter:
$ while read; do for ((i=0;i<${#REPLY};i++)); do c="${REPLY:i:1}"; if ((RANDOM%2)); then printf "%s" "$(tr a-z A-Z <<< "$c")"; else printf "%s" "$(tr A-Z a-z <<< "$c")"; fi; done; echo; done < dearcase.scpt | osascript
Dear Computer, please stop giving me shift!
$ 

2
Çok çok havalı! Umarım 1024'e ulaşabilirsin. Kodu biraz açıklamak ister misin?
Calvin'in Hobileri

2
@ Calvin's Hobbies Applescript en okunaklı dillerden biri olması gerekiyor - bunu gerçekten anlamıyor musunuz? ;-) Biraz açıklama eklemeye çalışacağım ...
Digital Trauma

2
Lütfen girilen ve girilen adın bulunmadığı golf versiyonunu yazınız end name. Olduğu gibi, sed -e 's/^ *//' -e 's/^end.*/end/' dearcase.scpt | wc -csaymak için kullanmalıyım . Ayrıca, değiştirerek 1037 için 1044 aşağı alabilirsiniz count of aetmek count ave silme loggelen log f as text. logKomutun boş sonuç verdiği eski bir OS X 10.4 sistemiyle test ediyorum ; osascriptolay günlüğünü değil yalnızca sonucu yazdırır, bu yüzden silmeden çıkış alamam log.
kernigh

3
C'yi üç kez yerine j'ye iki kez getirmek ve arama sitelerini gereken şekilde güncellemek 7 karakterden tasarruf sağlar ve sizi sınırın altına alır.
paradigmsort

3
# Interpret all upper case: $ tr A-Z a-z- Arkanlar geriye doğru değil mi?
Izkata

16

PHP, 2 ^ -12

echo ucwords(strtolower('Dear Computer, ')).strtolower('please stop giving me shift!');

PHP PHP, büyük harf olmak echo, ucwordsve strtolowermadde yok. Çağrılar ucwordsve strtolowerdizelerin durumunun çıktının değişmeyeceğinden emin olun.

Bu nedenle, değiştirilemeyen tek karakter ((,)).(!);(10 karakter).

Tırnak Her çift de geçerli olma olasılığı% 50'dir ( ''ve ""geçerlidir, ancak '"ve "'bu nedenle her ikisinin başka güç ekleyerek değildir).


2
@ edc65 ucwordsher kelimenin ilk harfini büyük harf yapar
es1024

1
İyi bir IDE sadece hiç ile bitireceğiz (sizin için doğru kapanış tırnak katacak ''ya ""için hala% 50 şansı o kadar olsa, hem de kapanış parantez (, )otomatik olmalıdır.
WOUNDEDStevenJones

ateş, herhangi bir gezinme tuşunu (ok) kullanamazsınız, bu nedenle IDE'niz otomatik olarak doğru bir şekilde tamamlansa bile, aynı karakteri tekrar yazmanız gerekir, aksi takdirde yeni (yanlış) bir karakter ekler: strtolower("Dear Computer, '"0)...
WOUNDEDStevenJones 17:14

1
@ WOUNDEDStevenJones IDE özelliklerine güvenmenin hile olarak sayılacağına inanıyorum.
Ingo Bürk

1
<?Programın başında ne olacak ?
Michael Mior

5

Not: Bu aslında bir arada 3 cevaptır. Birbirlerinin tam anlamıyla çevirileri olduklarında bunu birden fazla cevaba bölme noktasını görmedim. Bölünmeleri gerekiyorsa, bana bildirin, ben bununla ben ilgilenirim.

Özellikleri yeniden okuduktan sonra, bunun gerçekten geçersiz olduğunu fark ediyorum. Her cevap> 4000 karakter uzunluğundadır. Ama farklı yöntemlerden dolayı bunu yine de burada bırakacağım.

Python 2, 2 ** - 41

print''.join(map(chr,map(len,'                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              '.split(' '))))

Sadece farklı bir çözüm tarzı sunmak. Her karakterin ascii değerini sekmelerde, boşluklarda bölünmüş şekilde kodlar. Sekmelerin sayısı ascii değerinin sayısıdır.

Bu aynı bir çözümdür

Pyth, 2 ** - 11

j""mCldc"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               "d

Başka bir özdeş çözüm - yeni satırlarla değiştirilen alanlar hariç - içinde

Golf Betiği, 2 ** - 8

'                                                                                                                                                                                                                                                                               









































                                                                                                                                    'n/{,}%+

Belki de ikili kodda kodlama GolfScript için işe yarayabilir. 1 olarak SEKME, 0 olarak SEKME veya tam tersi.
Justin,

3
GolfScript cevaplarının çoğunu boşluk olarak gören sadece ben değilim, değil mi?
Pharap

1
@Pharap Bu hiledir. Newlines ile ayrılmış bir sürü sekme var. Tamamen aşağıya inip sağa kaydırırsanız, dizenin nerede bittiğini ve onu ascii'ye dönüştürmek için sihir yaptığını göreceksiniz.
Justin,


4

Boşluk (645 bayt, 2 ^ 0 olasılık)

Bu program sadece sekmeler, boşluklar ve yeni satırlar kullandığından (bunlar değişmeden etkilenir),% 100 başarı oranı verir.

             





















































































  

Program çalışması


1
Ancak bunun kurallara göre rekabet dışı olduğuna dikkat edin.
Ingo Bürk,

3

CJam, 2 -9 şans, 739 bayt

"                         
(lines of space characters)
                                        "N/2fb:c

base64:

IiAJICAgIAkgCQkgICAJICAKICAgCSAJCSAgIAkJCQkgCQoJCQkJIAkgIAkJIAkJICAJCiAJICAg
IAkgCQkgICAgCSAKICAgCSAJCSAgCSAgICAgIAogCQkJCSAJICAJCSAJIAkJCgkJCSAJICAJCSAJ
CSAJCQkKIAkgCQkgIAkgICAgIAkgCQoJIAkJICAJICAgIAkgICAgCgkgIAkJIAkJCQkgIAkJIAkK
CQkgCSAgCQkgCQkJIAkgIAogICAJIAkJICAgCQkJCSAJCiAJICAgIAkgCQkgICAgCSAKIAkJCQkg
CSAgCQkgCQkgIAogICAJIAkJICAJICAgICAgCgkgCQkgIAkgICAgCSAgICAKCSAgCSAgICAJIAkg
CQkgIAogICAJIAkJICAgCQkJCSAJCgkJCQkgCSAgCQkgCQkgIAkKICAgIAkgCQkgICAJCSAJCQog
ICAJIAkJICAgCQkJCSAJCiAgIAkgCQkgIAkgICAgICAKICAgIAkgCQkgICAJCSAJCQoJCSAJICAJ
CSAJCQkgCSAgCgkJCSAJICAJCSAJCSAJCQkKCSAJCSAgCSAgICAJICAgIAogICAJIAkJICAJICAg
ICAgCgkgCSAgCQkgCQkJIAkJCQkKICAJCSAJCQkJIAkgICAgCQogCQkgIAkgICAgCSAgCQkgCiAg
CQkgCQkJCSAJICAgIAkKICAJICAgIAkgCSAJCQkJIAoJIAkgIAkJIAkJCSAJCQkJCiAgIAkgCQkg
IAkgICAgICAKIAkgCQkgIAkgICAgIAkgCQogICAJIAkJICAgCQkJCSAJCiAgIAkgCQkgIAkgICAg
ICAKICAgIAkgCQkgICAJCSAJCQogCQkgCQkJCSAJICAJICAgCiAgCQkgCQkJCSAJICAgIAkKCQkg
CQkJCSAJICAJIAkJIAoJCSAJICAJCSAJCQkgCSAgCgkJIAkJCQkgCSAgCQkgIAkiTi8yZmI6Yw==

Doktor ve Quincunx'un cevabı fikrine dayanarak.


3

Python 2, 2 -20 Şansı

print'S'+'top giving me shift!'.lower()

print, S, +, !, Ve .lower()tüm doğru versiyonu olması gerekir; bu 18 karakter. Dizeler için iki tırnak aynı zamanda ikiden daha fazla güç yapan aynı hizada olmalıdır.

Herhangi biri için top giving me shift, eğer sermaye versiyonuna dönüştürülürse, küçük harfe dönüştürülür ve düzgün çalışır.

Ne yazık ki, Python'un şıklığını kullanamıyorum capitalize(), çünkü bu bir karakter daha alıyor.


Yardım ederse, kelime öbeği artık uzundur (ancak normalde büyük harf kullanılamaz).
Calvin'in Hobileri

@ Calvin'in Hobileri Bunu gördüm. Yardımcı olmuyor; Zarar verir.
Justin,

2

VisualBasic.net 2 ^ -18

Kritik karakterler:. ("DearC" + ",!". ())

Sub Main
  console.write("Dear C"+"omputer, please stop giving me shift!".tolower())
End Sub

LINQPad'de Test Edildi, Dil = "VB Programı"


Sanırım görsel stüdyo kasayı sizin için otomatik olarak düzeltirdi.
Pharap

@Pharap ancak dış tırnakların kasası sorun değil ... VS bir düzeltmez '(' '9' a kaydırıldı
edc65

1
Bu durumda, daha kullanışlı bir şey: Eğer almanın potansiyel durumda kurtulabilirsiniz >yerine .değiştirilerek Console.Write(string)için Write(string)ve takas (string).ToLower()için dışarı LCase(string).
Pharap

1

Pyth, 2 ** - 15

+"S"$"top giving me shift!".lower()

Pyth'un versiyonunu bulamıyorum lower(), bu yüzden Python'dan ödünç alacağım. Takas edilemez karakterlerdir +"S"$, !ve .lower()14 karakter olmak üzere toplam. Zorunludan sonra yapılan alıntılar $eşleşmeli ve 2 güç daha eklenmelidir.


Pyth'un lower()elinde bir şey yoktu - yeterince kullanılmıyordu. Muhtemelen tekrar eklemeliyim.
isaacg

1

Rant, 2-21

[caps:first][?[caps:word][?[caps:lower]Dear Computer][caps:lower], please stop giving me shift!]

Bir dizi meta model ve capsçağrı doğru biçimlendirmeyi zorlar. İşlev adları ve argümanlar büyük / küçük harf duyarsızdır.

Çevrimiçi sürüm



1

VB.NET, 2 ^ -12 2 ^ -11

2 -12

Module All
  Sub Main 
    Console.WriteLine StrConv("Dear Computer, ", vbTuesday) & "please stop giving me shift!".ToLower
  End Sub
End Module

2 -11

Imports System.Console

Module All
  Sub Main 
    Write StrConv("Dear Computer, ", vbTuesday)
    WriteLine "please stop giving me shift!".ToLower
  End Sub
End Module

0

Sadece Enter, Tab, Space 'kuralı dahil' 50 karaktere geçmeden önce cevabımı düşündüm. Yani benimki geçerli değil.

Büyük / küçük harf duyarsız programlama dilleri var burada görünüyor. Alternatif olarak, bir Gerçek standart QWERTY klavyeyi (Caps Lock, diğer Shift, Backspace ve Numpad Period dahil) kullanabiliyorsanız, sadece başarısızlık başına 2 ek tuşa basılmasıyla sonuçlanacak sadece% 50 şans olacaktır. Gerçek bir tuşa basıldığını gösteren bir C # Konsol Uygulaması için geçersiz cevabım:

HoldShift(C CpsLockOn onsole)

NumPadPeriod

HoldShift(
CpsLockOff W CpsLockOn rite(" 
CpsLockOff D CpsLockOn ear space
CpsLockOff C CpsLockOn omputer
)

, (repeat with Backspace until correct)

HoldShift( please stop giving me shift!"))

; (repeat with Backspace until correct)

Sadece 2 gerekli% 50 şans ile 76 minimum pres


0

Excel, 2-11

=PROPER("Dear Computer, ")&LOWER("please stop giving me shift!")

Davası var PROPERve LOWERönemli değil. +Otomatik olarak ekler ile başlayan bir formül girmek gerekli =. Yani sadece (, ", ,, ), &, !kırabilir.

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.