BU gibi YAZDIR


17

STDIN'e bir girdi alan ve 2k-1th kelimesindeki tüm küçük harfleri (aksanlı harfler dahil) ve th kelimesindeki tüm büyük harfleri (aksanlı harfler de dahil) yapan bir program yazın 2k( kpozitif bir tamsayıdır). Program hiçbir kelimedeki diğer karakterleri etkilememelidir. Örneğin, dize ise Ook! O0k!çıktı olmalıdır OOK! o0k!.

Boşluk olmayan bir karakterden sonra sıfır olmayan bir boşluk olduğunda yeni bir kelime oluşturulur. Bir girişin başındaki boşluk dikkate alınmamalıdır. Bir sözcük değiştirilmiş karakter içermiyorsa, program yine de bir sözcük olarak düşünmeli ve devam etmelidir.

Örnek girişler (Farklı girişler boş bir satırsonu ile ayrılır)

Nineteen Eighty-Four (1984)

Programming Puzzles & Code Golf   - 
Hooray for Code Golf Stack Exchange!

     2be or not 2be, that is the ~~~QuEsTiOn~~~

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

Örnek çıktılar

NINETEEN eighty-four (1984)

PROGRAMMING puzzles & code GOLF   - 
HOORAY for CODE golf STACK exchange!

     2BE or NOT 2be, THAT is THE ~~~question~~~

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

Bu kod golf, beyler. Standart CG kuralları geçerlidir. Bayt cinsinden en kısa program kazanır.


Boşluk ve harf olmayan karakterlerle ilgili tüm boşlukları kapsadığımdan eminim, ancak herhangi birini kaçırdıysam lütfen söyle.


Aşağıdaki kod snippet'ini oluşturduğu için @Optimizer'a teşekkürler . Kullanmak için, "Kod snippet'ini göster" i tıklayın, en alta kaydırın ve "► Kod snippet'ini çalıştır" ı tıklayın.


5
Aksanlı karakterler ne olacak? Bunları görmezden gelmek zorunda mıyız? İşlevlere izin veriliyor mu?
Downgoat

Soruyu yazdığımda aksanlı karakterlerim yoktu ama sanırım sayılacaklardı. Fonksiyonlara izin verilir.
Arcturus

Hangi boşluk karakterlerini hesaba katmamız gerekiyor? Boşluk olmayan karakterlerin yazdırılabileceğini varsayabilir miyiz?
Dennis

Tüm boşluk karakterleri ve evet.
Arcturus

Yanıtlar:


4

Vim komut dosyası, 22 21 bayt

nm Q vEUWvEuWQ|norm Q

Açıklama:

İlk komut şununla Qeşleşir:

vEUkelime büyük harf
Wsonraki kelimeye gitmek
vEukelime küçük harf
Wsonraki kelimeye gitmek
Qözyinelemeli eşleme tekrar

ve |norm Qeşlemeyi yürütür

Programın kullanımı

Vim'in stdin'den okumasını şu şekilde elde edersiniz :

$ vim - -c 'nm Q vEUWvEuWQ|norm Q'
Vim: Reading from stdin
This is the first line!
This is the second line!
This is the third and last line I type to check if this works!
^D

Bu Vim'i açarak aşağıdakileri gösterir :

THIS is THE first LINE.
this IS the SECOND line.
THIS is THE third AND last LINE i TYPE to CHECK if THIS works!
~
~
~

6

GNU sed, 28

-rzGNU sed'e geçiş için puan +2 içerir .

s/(\S+\s*)(\S*)/\U\1\L\2/g

Test çıktısı

$ for t in 'Nineteen Eighty-Four (1984)' \
> 'Programming Puzzles & Code Golf   - 
> Hooray for Code Golf Stack Exchange!' \
> '     2be or not 2be, that is the ~~~QuEsTiOn~~~' \
> '++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.'; do
> echo "$t" | sed -zrf PRINTlikeTHIS.sed
> done
NINETEEN eighty-four (1984)
PROGRAMMING puzzles & code GOLF   - 
HOORAY for CODE golf STACK exchange!
     2BE or NOT 2be, THAT is THE ~~~question~~~
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
$ 

5

Perl, 26 bayt

25 bayt kodu + 1 bayt komut satırı

s/\S+/++$i%2?uc$&:lc$&/eg

Birkaç hatayı düzelttiği için ThisSuitIsBlackNot için teşekkürler!

Kullanımı:

perl -p entry.pl

3

Pyth, 23

jdmjbmrk=xZ!!kcdbcjb.zd

Çevrimiçi deneyin veya test paketini çalıştırın

Pyth en arasına Alternatifler lowerve upperfonksiyonları, hangi r...0ya r...1. Bu muhtemelen unicode karakterleri etkileyerek OP açıklamasının değişmesini bekler.

Bir şey golf edilebilir olmalı gibi hissediyorum. Özellikle XOR, üzerinde upper/ lowerkullanılması gereken anahtarı değiştirmek için kullanılır.


Soruyu doğru yorumladıysam, girdi A\nByazdırılmalıdır A\nb.
Dennis

Bu sorunun doğru bir yorumu değildir. A new word is formed when there is a nonzero amount of whitespace after a non-whitespace character.İçin çıkış A\nBDİR A\NB. Ama görünüşe göre CJAM cevabınız doğru.
Arcturus

@Dennis teşekkürler, şimdi düzeltilmelidir.
FryAmTheEggman

2

Perl, 87 bayt

Her iki düzenli ifadeyle vidalandıktan sonra ve mapbir süre için zarif bir çözüm bulamadım, bu yüzden sonuç:

@a=split(" ",lc(<>));while($i<=$#a/2){@a[$i*2]=uc(@a[$i*2]);$i++;}print(join(" ", @a));

1
Güzel çözüm. Birkaç bayt kaydetmek için <STDIN> <> ile değiştirilebilir mi? Ayrıca, $ i = 0 atlanabilir mi?
steve

@steve Teşekkürler; ve evet, küçük bir düzeltme ile birlikte (farklı bir girişle test edildi ve küçük bir hata vardı) şimdi dahil edildi. Fikirler için teşekkürler! Çok ayrıntılı, açık kodlama
alışkınım

1
@ Codefun64 PPCG'ye hoş geldiniz! Perl'de isteğe bağlı olarak daha fazla bayt kaydetmek için parantezinizin çoğunu atlayabilirsiniz, ör. lc(<>), olabilir lc<>ve sizin için bir deyim değiştirici kullanarak whileparantezinizi atlamanıza da izin verir. print$i++while$i<10vs while($i<10){print$i++}. Perl'de Golf için
Dom Hastings

2

Yakut, 56 bayt

$><<gets.gsub(/\S+/){($.+=1)%2>0?$&.downcase: $&.upcase}

2

JavaScript ES6, 74 71 bayt

.toUpperCase()ve .toLowerCase()bayt sayısını kesinlikle keser (32 bayt 0.o ekler). Çoğu çözüm, daha fazla bayt ile sonuçlanır

s=>s.replace(/(\S+\s*)(\S*)/g,(_,a,b)=>a.toUpperCase()+b.toLowerCase())

1

Gelenekselleşmiş, 108 125 , 120

System.in.eachLine{def b;it.split(" ").any{if(!it.empty)b=!b;print "${b?it.toUpperCase():it.toLowerCase()} "};println()}

Olmasını umduğum kadar temiz değil, Groovy cevaplarımın bir teması gibi görünüyor.

  • +17 önde gelen boşlukla davranışı düzeltmek için
  • Sondaki yeni satırı kaldırmak ve .isEmpty () 'den .empty'ye geçmek için

 

$ cat tests.txt 
Nineteen Eighty-Four (1984)

Programming Puzzles & Code Golf   - 
Hooray for Code Golf Stack Exchange!

     2be or not 2be, that is the ~~~QuEsTiOn~~~

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
$ groovy PRINTlikeTHIS.groovy < tests.txt 
NINETEEN eighty-four (1984) 

PROGRAMMING puzzles & code GOLF   - 
HOORAY for CODE golf STACK exchange! 

     2BE or NOT 2be, THAT is THE ~~~question~~~ 

++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++. 

1

Lua, 96 bayt

i=0 print(io.read'*l':gsub('%S+',function(x)i=i+1 return i%2==1 and x:upper() or x:lower()end))

Bu, çıktıdan sonra bir sayı yazdırır.
Trebuchette

1

Python 3, 103 95 bayt

print(' '.join(b.lower()if a%2 else b.upper()for a,b in enumerate(input().strip().split(' '))))

[b.upper(),b.lower()][a%2]4 bayt kaydetmek için koşullu ile değiştirebilirsiniz (mobil cihazda doğru sayıldığımı varsayarak).
PurkkaKoodari

1

STATA, 252 bayt

insheet using a.b
g b=word(v,1)
gl c=0
forv x=1/`=_N'{
loc d=1
while b[`x']!=""{
if !$c replace v=subinword(v,b,upper(b),1) if `x'==_n
if $c replace v=subinword(v,b,lower(b),1) if `x'==_n
loc ++d
replace b=word(v,`d') if `x'==_n
gl c=1-$c
}
di v[`x']
}

Ab adında bir csv dosyası (bir sütun) olarak girdi bekler

Açıklama:

İçindeki verileri oku (varsayılan değişken adı v1, v ile kısaltılabilir). Her satır için v'nin ilk sözcüğüne (boşlukla ayrılmış jeton) eşit olan yeni bir değişken b yapın. Her satır için, bir sonraki sözcük boş olmasa da (yalnızca o satırda daha fazla karakter yoksa oluşur), v'deki kelimeyi, kaç satır (mod 2) bağlı olarak geçerli satırdaki o kelimenin büyük veya küçük harf sürümüyle değiştirin. ) kelimeler zaten bulundu. Sonra bir sonraki kelimeyi alın ve tekrarlayın. İşiniz bittiğinde tüm satırı yazdırın.


1

Delphi, 290 bayt

program P;uses SysUtils;var s:string;i:word;w:byte;f:boolean;begin repeat readln(s);w:=0;f:=false; for I:=1 to length(s) do begin if s[i]>' ' then begin if w=0 then f:=not f;w:=1;if f then s[i]:=uppercase(s[i])[1] else s[i]:=lowercase(s[i])[1] end else w:=0 end;writeln(s)until false;end.

Gerçekten golf ile iyi bir dil ...


Programlama Bulmacaları ve Kod Golf hoş geldiniz!
Dennis

1

Lua, 88 bayt

a=io.read():gsub("%g+",function(s)m=not m return m and s:upper()or s:lower()end)print(a)

1

CJam, 28 bayt

q{C' >Sc'!<*X^:XCelCeu?:S}fC

Şu anda ilk 33 ASCII / Unicode karakterleri (ve sadece bu) boşluk düşünüyorum. Bunun geçerli olup olmadığını öğrenmek için açıklama bekliyorum.

CJam yorumlayıcısında çevrimiçi deneyin .


1

Pyth, 17 22 bayt

FGcwd=+YrG=Z%+1Z2;jdY

Burada deneyin


Önde gelen uzay durumu başarısız ama yine de güzel.
tjbtech

Bu aynı zamanda birden fazla satırdaki girişi işlemez ve bir boşluk bırakır.
FryAmTheEggman

Yapabildiğim zaman refactor olacağım, teşekkürler: D
alkış

0

C #, 104 , 100 99 bayt

static void Main(){string.Join(" ","".Split(' ').Select((o,i)=>i++%2==0?o.ToUpper():o.ToLower()));}

79 bayt ile

string.Join(" ","".Split(' ').Select((o,i)=>i++%2==0?o.ToUpper():o.ToLower()));
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.