A නැත, CAPS LOCK කරන්න


204

CapsLockඔබගේ යතුරුපුවරුවේ යතුරේ ලකුණක් නොමැති විට කුමක් සිදුවේද ?

"මෙම hPPENS."

මෙම වැඩසටහනේ පරමාර්ථය වන්නේ සෑම Aමුද්‍රණ යන්ත්‍රයක්ම ප්‍රතිස්ථාපනය කරන යතුරුපුවරු මඟ හැරීම් නිරන්තරයෙන් අනුකරණය CapsLockකිරීමයි. ප්‍රභවයේ සිට ඉහළ අකුරු එකම බලපෑමක් ලබා දිය යුතුය. සක්‍රිය කළ විට CapsLock, ප්‍රාග්ධනීකරණය ආපසු හරවනු ලැබේ.

පරීක්ෂණ අවස්ථා

"The quick brown fox jumps over the lazy dog."
-> "The quick brown fox jumps over the lZY DOG."

"Compilation finished successfully."
-> "CompilTION FINISHED SUCCESSFULLY."

"What happens when the CapsLock key on your keyboard doesn't have a notch in it?"
-> "WhT Hppens when the CPSlOCK KEY ON YOUR KEYBOrd doesn't hVE  notch in it?"

"The end of the institution, maintenance, and administration of government, is to secure the existence of the body politic, to protect it, and to furnish the individuals who compose it with the power of enjoying in safety and tranquillity their natural rights, and the blessings of life: and whenever these great objects are not obtained, the people have a right to alter the government, and to take measures necessary for their safety, prosperity and happiness."
-> "The end of the institution, mINTENnce, ND dministrTION OF GOVERNMENT, IS TO SECURE THE EXISTENCE OF THE BODY POLITIC, TO PROTECT IT, nd to furnish the individuLS WHO COMPOSE IT WITH THE POWER OF ENJOYING IN Sfety ND TRnquillity their nTURl rights, ND THE BLESSINGS OF LIFE: nd whenever these greT OBJECTS re not obtINED, THE PEOPLE Hve  RIGHT TO lter the government, ND TO Tke meSURES NECESSry for their sFETY, PROSPERITY nd hPPINESS."

"aAaaaaAaaaAAaAa"
-> "" (Without the notch, no one can hear you scream)

"CapsLock locks cAPSlOCK"
-> "CPSlOCK LOCKS CPSlOCK"

"wHAT IF cAPSlOCK IS ALREADY ON?"
-> "wHt if CPSlOCK IS lreDY ON?"

ජයග්‍රාහී නිර්ණායකය සුපුරුදු පරිදි ඉදිරිපත් කළ වැඩසටහනේ ප්‍රභව කේතයේ ප්‍රමාණයයි.


111
වෙබ් අඩවියට සාදරයෙන් පිළිගනිමු! මෙය කදිම පළමු අභියෝගයක් වන අතර අවාසනාවකට මට සහ මගේ අඩි ඇඟිලි වලට ඉතා සාපේක්ෂයි.
ජේම්ස්

5
යෝජිත පරීක්ෂණ නඩුව:teSTateSTateSTateST
රොඩ්

89
ප්රධාන ද එය තුළ ලෝකයේ ප්රමුඛතම සිදු ඇතුළු පමණක් නම් මේ දෙකම ලැබිලා තියෙනවාඒ '
12Me21

75
එය සිදු නොවේ .......
12Me21

24
වචනයේ පරිසමාප්ත අර්ථයෙන්ම මෙම වෙබ් අඩවියට සම්බන්ධ වූයේ “ප්‍රමුඛස්ථානයක් නොමැතිව, ඔබ
කෑගැසීම

Answers:


116

AutoHotKey , බයිට් 7 යි

a::vk14

// මෙය වලංගු ද? මෙම ඇත්තටම විශ්රාම වැටුප් අවශ්ය දේ කරන්න - වෙනුවට aවිසින් CapsLock (vk14).

මෙම වැඩසටහන ක්‍රියාත්මක කර යතුරුපුවරුවෙන් ආදානය ටයිප් කරන්න ..


4
"මෙය වලංගු ද?" OP විසින් ආදාන හෝ ප්‍රතිදාන අවහිරතා සඳහන් නොකළ බැවින් මෙය වලංගු යැයි මම සිතමි.
නෙෆ්රින්

5
බොහෝ පිළිතුරු නොපෙනේ!
HaveSpacesuit

1
"මගේ කේතය සෑම තැනකම ක්‍රියාත්මක වේ"
sudo rm -rf slash

57
එය විශිෂ්ටයි නමුත් මම එය අක්‍රීය කරන්නේ කෙසේද?
රොබ්ජි

70
@RobbG "killLL utohotkey" ටයිප් කරන්න ... ඔහ් wIT
නෙෆ්රින්


22

Vim, බයිට් 16 යි

qq/\ca
xg~$@qq@q

ආදානය තනි පේළියක ඇතැයි උපකල්පනය කරයි

පැහැදිලි කිරීම

qq            Start a loop
 /\ca␊         Find the first occurence of an a, end the loop if there are none left
 xg~$          Remove it and invert the case of the rest of the file
@qq@q         End the loop 

මෙම නඩුව 'අ' සොයා ගැනීම සංවේදීද?
ග්නූඩිෆ්

N රීජෙක්ස් \c- සෙවුමක ඕනෑම තැනක ග්නූඩිෆ් විසින් සිද්ධි- සංවේදීතාව සක්‍රීය කරයි
හර්මන් එල්

වැඩ කිරීමට ඔබට නිශ්චිත ධජයක් සැකසීමට g~$අවශ්‍යද? මක්නිසාද යත් මට එය නඩුව ප්‍රතිලෝම කරන්නේ පේළියේ අවසානය දක්වා මිස මුළු ගොනුවම නොවේ, එබැවින් මෙය මා සඳහා බහු ලිපිගොනු සඳහා ක්‍රියා නොකරයි.
කියුබික්

1
Ub කියුබික් මම පිළිතුරෙහි ලියා ඇති පරිදි, එය "ආදානය තනි පේළියක ඇතැයි උපකල්පනය කරයි"
හර්මන් එල්

@Cubic ඔබ එය බහු පිලිවෙත් මත ගොනු හා සහයෝගය යෙදවුම් අවසන් වීමට උවමනා නම්, ඔබට කළ හැකි g~vGහෝ vG~.
ජේම්ස්

15

සී, බයිට් 72 යි

බයිට් 16 ක් ඉතිරි කර ගැනීමට උදව් කිරීම ගැන on ටොන් හොස්පෙල්ට ස්තූතියි!

t,c;f(char*s){for(t=0;c=*s++;6305%c?putchar(isalpha(c)?c^t:c):(t^=32));}

එය මාර්ගගතව උත්සාහ කරන්න!


2
ඔබට xor භාවිතා කරමින් අකුරු නඩුව 32
ටොන් හොස්පෙල්

ඔබ බොහෝ විට සහිත විසින් ඊටත් වඩා ඉතිරි කර ගත හැකි වනු tබව 0/32(එක් 32 XOR ටී පවා / අමුතු වෙනුවට aසමග සෘජුව) හා එවකට XOR ලිපිt
ටොන් Hospel

2
හඳුනා ගැනීමට විදිහෙන් aගේ
ටොන් Hospel

1
OnTonHospel කාර්යයන් නැවත භාවිතා කළ යුතු අතර , සෑම ඇමතුමකටම පසුව එය නැවත භාවිතා කළ හැකි වන පරිදි බාහිර කේතයක් අවශ්‍ය නම් එය නැවත භාවිතා කළ හැකි යැයි මම නොසිතමි.
ස්ටෙඩිබොක්ස්

1
6305%c13 නම් 0 cවේ.
රෝසි එෆ්

12

රෙටිනා , 33 21 17 බයිට්

i(Tv`lL`Ll`a.*
a

එය මාර්ගගතව උත්සාහ කරන්න

පැහැදිලි කිරීම:

i(              i is for case-insensitive, the paren makes it modify both stages
  Tv`           Transliteration, with simple overlaps (v) - 1 match at every start pos
     lL`Ll`     Replace lowercase with uppercase, and vice versa
           a.*  Every 'a' will match, overlapping to the end of the string
                This swaps the case on all letters after each 'a'
a               Replace all 'a's with nothing

-12 බයිට් මාටින්ට ස්තූතියි
-4 බයිට් ලියෝට ස්තූතියි


පුදුමයට කරුණක් නම් මෙය වර්තමාන පයිත් විසඳුම් තරම්ම කෙටි ය
ටොන් හොස්පෙල්

1
මම හිතන්නේ iT`aAlL`__Ll`a[^a]*a?බයිට් 21 ක් සඳහාත් වැඩ කරයි.
නීල්

අතිච්ඡාදනය වන තරඟ භාවිතා කරමින් බයිට් 4 ක් කෙටි වේ
ලියෝ

ඔබට පැහැදිලි කිරීම එක් කිරීමට කාලය ඇත්නම් මෙය ක්‍රියාත්මක වන්නේ කෙසේදැයි මම උනන්දු වෙමි. ස්තූතියි!
seshoumara

11

ලෙල්ල , බයිට් 11 යි

Γ·§?m\:€"Aa

එය මාර්ගගතව උත්සාහ කරන්න!

පැහැදිලි කිරීම

මම යන තරමක් අප්රකට වැඩියෙන් භාවිතා කරනවා Γනම් listNFලැයිස්තුවල ක්රියාත්මක වන ආවර්තනික කාර්යයන් වඩී වන. එය පහත දැක්වෙන හැස්කල් රටාවට අනුරූප වේ:

listNF f = g
  where g (x : xs) = f g x xs
        g [] = []

අදහස නම් listNFසහායක ශ්‍රිතයක් fගෙන නව ශ්‍රිතයක් නැවත ලබා දීමයි g. ශ්‍රිතය ශ්‍රිතයක් fගනී, එය සැමවිටම වනු ඇත g, සහ ලැයිස්තුවේ හිස xසහ වලිගය xs, ඔවුන් සමඟ යමක් කරයි. අපගේ යෙදුමේ, නැවත නැවත fඇමතුම් . වැඩසටහන මේ ආකාරයට අර්ථ නිරූපණය කෙරේ:gxs

Γ (· (§ (?m\) : (€"Aa")))
Γ (                     )  Create a function g that takes a list (x:xs) and applies a function on x and xs.
   · (                 )   Compose g with second argument of function in parentheses.
                           Instead of x and xs, the function is called on x and the result of a recursive call of g on xs.
                (€"Aa")    Check if x is 'A' or 'a'.
        (?m\)              If it is, then swap the case of every char in g(xs).
      §       :            Otherwise, prepend x to g(xs).

3
ඇවැත්නි, මගේ බයිට් 12 විසඳුම පළ කිරීමට පෙර මම ප්‍රබෝධමත් කළෙමි : Ḟ·+m\ṁx'Ax'a. අපට පැහැදිලි කිරීමක් ලබා ගත හැකිද? Γහරියටම කරන්නේ කුමක්ද යන්න පිළිබඳව මට කිසිදු තොරතුරක් සොයාගත නොහැකි අතර මෙය ඉගෙන ගැනීමට හොඳ අවස්ථාවක් සේ පෙනේ.
සොෆියා ලෙක්නර්

1
O සොෆියාලෙක්නර් කළා. මෙම අනුවාදය Γපැහැදිලි කිරීම ටිකක් අපහසුයි, ඔබට එය තේරුම් ගත හැකි යැයි මම විශ්වාස කරමි.
Zgarb

වාව් මෙය මන්දගාමී ය. එය TIO පමණක්ද?
ෆ්‍රව්නි ෆ්‍රොග්

1
RoFrownyFrog එය ලෙල්ල. අඩංගු වැඩසටහන් වල අනුමාන කිරීම් Γසාමාන්‍යයෙන් මන්දගාමී බව පෙනේ. ඔබ හස්ක් ගැන හුරුපුරුදු නැතිනම්, වැඩසටහනේ සියලු ව්‍යුහයන් (අවශ්‍යයෙන්ම වරහන් වර්‍ග ස්ථානගත කිරීම) සහ එක් එක් ගොඩනඟන ලද සියලුම බර පැටවීම මඟින් වැඩසටහන අර්ථ නිරූපණය කරනු ලැබේ. ටයිප් කර ඇත. සමහර හැකියාවන් කලින් ප්‍රතික්ෂේප කිරීමට පරිවර්තකයා දක්ෂය, නමුත් පුනරාවර්තන අනුවාදය Γමෙම පියවර අවුල් කර තේරීම් රාශියක් හරහා ලූප කිරීමට බල කළ හැකි බව පෙනේ .
Zgarb

O සොෆියාලෙක්නර් මම යම් තොරතුරක් විස්තර Γකරන තොරතුරක් ලිව්වෙමි .
Zgarb

9

සී # , බයිට් 121

Console.WriteLine(string.Join("",Console.ReadLine().Split(new[]{'a','A'}).Select((a,i)=>i%2==0?a:a.ToUpper()).ToList()));

** යාවත්කාලීන කිරීම (@ ජෝන් සහ @aloisdg ට ස්තූතියි) **

සී # , බයිට් 69 යි

x=>string.Concat(x.Split('a','A').Select((a,i)=>i%2>0?a.ToUpper():a))

2
PPCG වෙත සාදරයෙන් පිළිගනිමු! පළමු පිළිතුර හොඳයි!
RedClover

2
ඔබට වෙනස් new[] { 'a', 'A' }කරමින් බයිට් 7 ක් ඉතිරි කර ගත හැකිය'a', 'A'
ජෝන්

5
එකම තර්කනයකින් ඔබට එය බයිට් 69 කින් කළ හැකිය! එය මාර්ගගතව උත්සාහ කරන්න! (කොන්සෝලය වෙනුවට ආදාන / අවුට් භාවිතා කරන්න, ටොලිස්ට් ඉවත් කරන්න, ත්‍රිකෝණය ප්‍රතිලෝම කර @ ජෝන් අදහස් භාවිතා කරන්න) මෙය කදිම පළමු පිළිතුරකි. දිගටම යන්න!
aloisdg codidact.com වෙත මාරු වීම

3
කැප්ස්ලොක් සක්‍රිය කර ඇති විට මෙම අනුවාදයන් දෙකම නඩුව මාරු නොකරයි (ඒවා ලොකු අකුරට පමණක් පරිවර්තනය වේ). මෙය අවශ්‍යතාවයකි. (අවසාන පරීක්ෂණ අවස්ථාව බලන්න)
බ්‍රෝඩ්වෙල්

බ්‍රෝඩ්වෙල් කැප්ස්ලොක් සක්‍රීය දැයි ඔබ දැන ගන්නේ කෙසේද? අවසාන පරීක්ෂණ නඩුව නිවැරදි බව ඔබට විශ්වාසද? එය මට පෙනෙන පරිදි අනෙක් සියලුම පරීක්ෂණ අවස්ථා සමත් වේ. ස්තූතියි!
ඇලව්ල්ක්ස්

7

JavaScript (ES6), 93 88 84 82 බයිට්

(@ ෂැගීට ස්තූතියි බයිට් 5 ක්, @ පරිශීලක 81655 ට ස්තූතියි බයිට් 4 ක් සහ @ l4m2 ට ස්තූතියි බයිට් 2 ක්.)

a=>a.replace(A=/./g,c=>c in{a,A}?(A=!A,''):A?c:c[`to${c<{}?'Low':'Upp'}erCase`]())

පරීක්ෂණ අවස්ථා:


1
['to${c<'a'?'Low':'Upp'}erCase']තනි උපුටා දැක්වීම් වෙනුවට බැක්ටික්ස් වෙනුවට ඔබට බයිට් කිහිපයක් ඉතිරි කළ යුතුය.
ෂැගී

ෂැගී. ස්තූතියි!
රික් හිච්කොක්

භාවිතා ^1කිරීමට u: මෙම සමතැන විය ඔබ කෙටි එය ඇරඹිය කරගන්න පුළුවන්s=>s.replace(u=/./g,c=>/a/i.test(c)?(u^=1,''):+u?c[`to${c<'a'?'Low':'Upp'}erCase`]():c)
user81655

aකෙටි ලිපිය පරීක්ෂා කිරීම සඳහා තවත් a=>a.replace(A=/./g,c=>c in{a,A}?(A^=1,''):+A?c[`to${c<'a'?'Low':'Upp'}erCase`]():c)
උපක්‍රමශීලී ක්‍රමයක් මෙන්න

දීප්තිමත්, @ user81655, විශේෂයෙන් inක්‍රියාකරු භාවිතා කිරීම . ඉගෙන ගැනීමට සෑම විටම තවත්!
රික් හිච්කොක්

6

ආර් , බයිට් 92 යි

cat(`[<-`(v<-el(strsplit(scan(,""),"a|A")),w<-c(F,T),chartr("a-zA-Z","A-Za-z",v)[w]),sep="")

පිළිතුර නිවැරදි කිරීම ගැන @ ගුසෙප්ට ස්තූතියි.

පැහැදිලි කිරීම

# Write
cat(
  # Replace and return, this is the function that powers
  # the R store at index operations, a[i]<-b
  `[<-`(
    # First arg - what to replace = extract first list element
    # of a string input after splitting at a or A
    v<-el(strsplit(scan(,""),"a|A")),
    # Second arg - index to replace = abuse vector recycling
    # to create infinite F, T, F, T, F, etc series
    w<-c(F,T),
    # Third arg - replacement values = replace with case toggled letters
    chartr("a-zA-Z","A-Za-z",v)[w]),
  # Write without separation
  sep="")

එය මාර්ගගතව උත්සාහ කරන්න!


සමහර විට මම එය පැහැදිලි කර නැත, නමුත් කැප්ස්ලොක් සක්‍රිය කර ඇති විට මෙම පිළිතුර ප්‍රාග්ධනීකරණය ආපසු හරවන්නේ නැත (එය ක්‍රියාත්මක වන්නේ toupper), එය අවශ්‍යතාවයකි.
බ්‍රෝඩ්වෙල්

2
බ්‍රෝඩ්වෙල් c(F,T)හරි වුවත්, එය ඉතා දක්ෂයි . පෙනෙන ආකාරයට එය chartr("a-zA-Z","A-Za-z",v)[w]වඩා හොඳ වනු ඇතtoupper
ගුසෙප්

IGiuseppe ස්තූතියි
Vlo

6

පවර්ෂෙල් කෝර් , බයිට් 105 යි

"$args"|% t*y|%{if($_-in97,65){$c=!$c}else{Write-Host -n($_,("$_"|%("*per","*wer")[$_-in65..90]))[!!$c]}}

එය මාර්ගගතව උත්සාහ කරන්න!

සැබෑ තෘතීය ක්‍රියාකරුවෙකු නොමැති අතර තිරයට මුද්‍රණය කිරීම සඳහා පෙරනිමි අන්වර්ථයක් නොමැති නම් එය එතරම් කෙටි නොවේ.

  • % t*y දක්වා පුළුල් වේ | ForEach-Object -Method ToCharArray . වල"$args".ToCharArray()
  • Write-Host -n පරාමිතිය සඳහා වේ -NoNewLine
  • "$_" හැරෙනවා [char]වර්ගය නැවත[string] (chars .Net කිසිදු ඉහළ / පහළ නඩුව ඇති)
  • |% *per කලින් සඳහන් කළ ආකාරයටම කෙටිමඟ අමතන්න, නමුත් .ToUpper() ඒ සමඟම.ToLower()
  • ($a,$b)[boolean test] ව්‍යාජ තෘතීය ක්‍රියාකරු ලෙස අපයෝජනය
  • !!$c බලහත්කාරයෙන් [bool] මෙහි එය නිර්වචනය නොකෙරේ, $nullඑබැවින් එය "කැප්ස් ලොක්: $ බොරු" ලෙස බල කෙරෙයි.

1
එය |% t*yමට මතක තබා ගත යුතු පිළිවෙලකි. වඩා කෙටි [char[]], මම ගොඩක් භාවිතා කරන. මම බොහෝ දුරට කියන්නේ එය ඉඟි නූලට යා යුතු බවයි.
AdmBorkBork

94 බයිට්: -join($args|% t*y|%{if($_-eq'a'){$c=!$c}else{(("$_"|%("*per","*wer")[$_-in65..90]),$_)[!$c]}}). |% *ethodක්‍රියාකරුවෙකුට ස්තූතියි !
mazzy

6

පර්ල් 5 -p , 31 30 29 බයිට්

-1 බයිට් ස්තූතියි wnwellnhof ට

-1 බයිට් ස්තූතියි @ikegami

#!/usr/bin/perl -p
s/a([^a]*)a?/$1^uc$1^lc$1/egi

එය මාර්ගගතව උත්සාහ කරන්න!


සරලව s/a(.*?)(a|$)/uc$1/egi(බයිට් 22) නොවන්නේ ඇයි ?
nwellnhof

@nwellnhof කැප්ස්ලොක් සක්‍රීයව නඩුව ටොගල් කරන බැවින් එය ලොකු අකුරක් පමණක් නොවේ
ටොන් හොස්පෙල්

1
අහ්, මට පේනවා. එවිට s/a(.*?)(a|$)/$1^uc$1^lc$1/egiඑක් බයිට් කෙටි වේ.
nwellnhof

wnwellnhof ස්තූතියි, එය ඉතා
පිළිවෙලයි

a([^a]*)a?කෙටි වේa(.*?)(a|$)
ikegami

5

පයිතන්, බයිට් 63 යි

f=lambda s:s and[s[0]+f(s[1:]),f(s[1:]).swapcase()][s[0]in"aA"]

තවත් පයිතන් විසඳුමක්, පයිතන් 2 සහ 3 හි ක්‍රියා කරයි. කුඩා යෙදවුම් හැර අන් සියල්ලටම ඉතා දිගු කාලයක් ගතවේ.


5

6502 යන්ත්‍ර කේත චර්යාව (C64), බයිට් 51 යි

A0 00 84 FE B1 FC F0 2A C9 41 F0 06 90 1A C9 C1 D0 08 A9 80 45 FE 85 FE B0 11
B0 06 C9 5B B0 08 90 04 C9 DB B0 02 45 FE 20 16 E7 C8 D0 D6 E6 FD D0 D2 60

0 කින් අවසන් කළ ආදාන නූලකට දර්ශකයක් බලාපොරොත්තු වේ $fc/$fd , තිරයට ප්‍රතිදානය කරයි.

විසුරුවා හැරීම අදහස් දැක්වීය

 .caps:
A0 00       LDY #$00
84 FE       STY $FE             ; init capslock state
 .loop:
B1 FC       LDA ($FC),Y         ; next char from string
F0 2A       BEQ .done           ; NUL -> we're done
C9 41       CMP #$41            ; compare to 'a'
F0 06       BEQ .isa            ; if equal, toggle capslock
90 1A       BCC .out            ; if smaller, direct output
C9 C1       CMP #$C1            ; compare to 'A'
D0 08       BNE .ctog           ; if not equal, check for letter
 .isa:
A9 80       LDA #$80            ; toggle bit 7 in caps lock state
45 FE       EOR $FE
85 FE       STA $FE
B0 11       BCS .next           ; and go on
 .ctog:
B0 06       BCS .cZ             ; if char larger 'A', check for 'Z'
C9 5B       CMP #$5B            ; compare with 'z'+1
B0 08       BCS .out            ; larger or equal -> direct output
90 04       BCC .tog            ; smaller -> apply capslock
 .cZ:
C9 DB       CMP #$DB            ; compare with 'Z'+1
B0 02       BCS .out            ; larger or equal -> direct output
 .tog:
45 FE       EOR $FE             ; toggle bit from capslock state
 .out:
20 16 E7    JSR $E716           ; output char
 .next:
C8          INY                 ; and loop to next char
D0 D6       BNE .loop
E6 FD       INC $FD
D0 D2       BNE .loop
.done:
60          RTS

දෛනික භාවිතයෙන් උදාහරණ එකලස් කිරීමේ වැඩසටහන:

ඔන්ලයින් නිරූපණය

තිර රුව

Ca65 සින්ටැක්ස් හි කේතය :

.import caps ; link with routine above

.segment "BHDR" ; BASIC header
                .word   $0801           ; load address
                .word   $080b           ; pointer next BASIC line
                .word   2018            ; line number
                .byte   $9e             ; BASIC token "SYS"
                .byte   "2061",$0,$0,$0 ; 2061 ($080d) and terminating 0 bytes

.bss
string:         .res    $800

.data
prompt:         .byte   $d, "input> ", $0

.code
                lda     #$17            ; set upper/lower mode
                sta     $d018

                lda     #<prompt        ; display prompt
                ldy     #>prompt
                jsr     $ab1e

                lda     #<string        ; read string into buffer
                sta     $fc
                lda     #>string
                sta     $fd
                jsr     readline

                lda     #>string        ; call our caps routine on buffer
                sta     $fd
                jmp     caps

; read a line of input from keyboard, terminate it with 0
; expects pointer to input buffer in $fc/$fd
; NO protection agains buffer overflows !!!
.proc readline
                ldy     #$0
                sty     $cc             ; enable cursor blinking
                sty     $fe             ; temporary for loop variable
                lda     $fd
                sta     $2              ; initial page of string buffer
getkey:         jsr     $f142           ; get character from keyboard
                beq     getkey
                sta     $fb             ; save to temporary
                and     #$7f
                cmp     #$20            ; check for control character
                bcs     prepout         ; no -> to normal flow
                cmp     #$d             ; was it enter/return?
                beq     prepout         ; -> normal flow
                cmp     #$14            ; was it backspace/delete?
                bne     getkey          ; if not, get next char
                lda     $fe             ; check current index
                bne     prepout         ; not zero -> ok
                lda     $2              ; otherwise check if we're in the
                cmp     $fd             ;    first page of the buffer
                beq     getkey          ; if yes, can't use backspace
prepout:        ldx     $cf             ; check cursor phase
                beq     output          ; invisible -> to output
                sei                     ; no interrupts
                ldy     $d3             ; get current screen column
                lda     ($d1),y         ; and clear 
                and     #$7f            ;   cursor in
                sta     ($d1),y         ;   current row
                cli                     ; enable interrupts
output:         lda     $fb             ; load character
                jsr     $e716           ;   and output
                ldx     $cf             ; check cursor phase
                beq     store           ; invisible -> to store
                sei                     ; no interrupts
                ldy     $d3             ; get current screen column
                lda     ($d1),y         ; and show
                ora     #$80            ;   cursor in
                sta     ($d1),y         ;   current row
                cli                     ; enable interrupts
                lda     $fb             ; load character
store:          cmp     #$14            ; was it backspace/delete?
                beq     backspace       ; to backspace handling code
                ldy     $fe             ; load buffer index
                sta     ($fc),y         ; store character in buffer
                cmp     #$d             ; was it enter/return?
                beq     done            ; then we're done.
                iny                     ; advance buffer index
                sty     $fe
                bne     getkey          ; not zero -> ok
                inc     $fd             ; otherwise advance buffer page
                bne     getkey
done:           lda     #$0             ; terminate string in buffer with zero
                ldy     $fe             ; get buffer index
                iny
                bne     termidxok       ; and advance ...
                inc     $fd
termidxok:      sta     ($fc),y         ; store terminator in buffer
                inc     $cc             ; disable cursor blinking
                rts                     ; return
backspace:      ldy     $fe             ; load buffer index
                bne     bsidxok         ; if zero
                dec     $fd             ;   decrement current page
bsidxok:        dey                     ; decrement buffer index
                sty     $fe
                bcs     getkey          ; and get next key
.endproc        

මට කියන්නට ඇත්තේ ඔබ එකලස් කිරීමේදී ලිවීමේ උත්සාහයට ගිය බව මම අගය කරමි. මම ඇත්ත වශයෙන්ම asm භුක්ති විඳීමට භාවිතා කළ කාරණයට මෙය බොහෝ සෙයින් සම්බන්ධ යැයි මම නොසිතමි, නමුත් සමහර විට අත්දැකීම් තිබීම නිසා එයින් අදහස් කරන්නේ කුමක්ද යන්න පිළිබඳව මා වඩාත් දැනුවත් වේ. අත්දැකීම් හෝ පහසුව මට කාරණයට අමතරව වේ. එවැනි උද්යෝගයක් දැකීමට එය මගේ දවස මඳක් දීප්තිමත් කරයි.
ප්‍රිෆ්ටන්

Ry ප්‍රිෆ්ටන් ස්තූතියි :) එය ප්‍රායෝගිකව පවත්වා ගැනීමට හොඳ ක්‍රමයක් පමණි, මම යම් ක්‍රීඩාවක් සඳහා වැඩ කරමින් සිටින අතර මෑතකදී මෙම ලස්සන පැරණි යන්ත්‍රය සඳහා ආදර්ශන
කේතයක්ද කරමි

හොඳයි එය දැකීම සතුටක්! එය පවත්වා ගෙන යන්න; මට මතකයි asm භුක්ති විඳින නමුත් මම හිතන්නේ නැහැ මම මේ දිනවල එය එතරම් භුක්ති විඳිනු ඇතැයි කියා (සමහර විට ඔබ වැනි පැරණි යන්ත්‍රයක් මා සතුව නොතිබුනේ නම්, එය එසේ නොවිය හැක) - C සෑම විටම මගේ ප්‍රියතම දේ වන අතර එය මම මූලිකවම භාවිත. කෙසේ වෙතත්, මෙය චැට් බවට පරිණාමය වීමට ඉඩ නොදේ - මම පිළිතුර අගය කළ බව පැවසීමට අවශ්‍යය!
ප්‍රිෆ්ටන්

5

ජාවා 8, 119 108 98 බයිට්

s->{int f=0,t;for(int c:s)if((t=c&95)==65)f^=1;else System.out.printf("%c",f<1|t<66|t>90?c:c^32);}

-11 බයිට් @ ඔලිවියර් ග්‍රෙගෝයර්ට ස්තූතියි . -Nevay ට
ස්තූතියි -10 බයිට් .

පැහැදිලි කිරීම:

එය මාර්ගගතව උත්සාහ කරන්න.

s->{                           // Method with char-array parameter and no return-type
  int f=0,t;                   //  Flag-integer, starting at 0
  for(int c:s)                 //  Loop over the characters of the input as integers
    if((t=c&95)==65)           //   If the current character is an 'A' or 'a':
      f^=1;                    //    Toggle the flag (0→1 or 1→0)
    else                       //   Else:
      System.out.printf("%c",  //    Print integer as character
        f<1|                   //     If the flag-integer is 0,
        t<66|t>90?             //     or the current character isn't a letter:
         c                     //      Simply output the character as is
        :                      //     Else (the flag it 1 and it's a letter)
         c^32);}               //      Print it with its case reversed

1
අත්‍යවශ්‍යයි ... මගේ පිළිතුර ඔබ ඉදිරියේ පළ කිරීම ඔවුන් මට තහනම් කළා ... කෙසේ වෙතත්, මෙන්න මගේ පිළිතුර, බයිට් 11 ක් කෙටි:s->{int z=0,d;for(int c:s)if((d=c&95)==65)z^=1;else System.out.printf("%c",z<1|d<66|d>90?c:c<91?c|32:c&95);}
ඔලිවියර් ග්‍රෙගෝයර්

@ ඔලිවියර් ග්‍රෙගෝයර් හොඳ පිළිතුරක්! මට පළ කිරීම තහනම් කිරීමෙන් ඔබ අදහස් කරන්නේ කුමක්ද? ඔබේ වැඩ ජාලය දැඩි ද?
කෙවින් ක ru යිසන්

මගේ පිළිතුර ටික වේලාවක් සුදානම් විය: මම පළ කිරීමට පෙර පරීක්ෂණ නඩු ඔප දැමුවෙමි, නමුත් හදිසියේම නිමක් නැති රැස්වීම් සිදුවිය.
ඔලිවියර් ග්‍රෙගෝයර්

1
නැහැ, කමක් නැහැ, රැස්වීම්වලට පෙර ඉක්මන් නොවීම ගැන මට දොස් පැවරිය යුතුයි ;-) නමුත් මෙය යෝජනා කිරීම ගැන ඔබට ස්තූතියි!
ඔලිවියර් ග්‍රෙගෝයර්

2
බයිට් 98:s->{int f=0,t;for(int c:s)if((t=c&95)==65)f^=1;else System.out.printf("%c",f<1|t<66|t>90?c:c^32);}
නෙවේ

5

සී, 167 168 158 131 බයිට්

කේත සමාලෝචනය සඳහා art මාර්ටින් එන්ඩර්ට ස්තූතියි: නැවත භාවිතා කිරීමට උපකාර කිරීම සඳහා මම නූල් සැකසුම් සඳහා ධාරා සැකසුම් මාරු කර ඇත්තෙමි. ඔවුන්ගේ යෝජනා සඳහා @RiaD සහ @ceilingcat ට බොහෝ ස්තූතියි.

c,d;(*t[][2])()={{isupper,tolower},{islower,toupper}};f(char*s){for(d=1;c=*s++;)t[0][1](c)==97?d=!d:putchar(t[!t[d][0](c)][1](c));}

එය මාර්ගගතව උත්සාහ කරන්න!

එය ක්‍රියාත්මක වන්නේ කෙසේද?

/* int c is the input character,
   int d is the Caps Lock flag (1=off, 0=on)  starting as "Off". */
int c, d;
/* array of comparison functions and transformation functions for each state */
(*t[][2])() = {{isupper, tolower}, {islower, toupper}};

f(char *s) {
  /* Loop if we haven't hit the terminator */
  for(d = 1; c = *s++;)
    t[0][1](c) == 97 ?
      /* If tolower(c)=='a' then flip the Caps Lock state */
      d=!d:
      /* Otherwise, convert character according to the following table:

                       Character case
         Caps Lock  UPPER       LOWER
                ON  tolower()   toupper()
               OFF  toupper()   tolower()
      */
      putchar(t[!t[d][0](c)][1](c));
  }
}

සටහන්

  • s[][]මැජික් සිදු වන්නේ කොතැනද: [][0]සංසන්දනය කිරීමේ ශ්‍රිතය වන අතර [][1]එය එක් එක් ප්‍රාන්තය සඳහා අදාළ පරිවර්තන ශ්‍රිතය වේ.
  • ! [0,1] පරාසයට බල කිරීම සඳහා සංසන්දනාත්මක ශ්‍රිතයට යොදනු ලැබේ.

PPCG වෙත සාදරයෙන් පිළිගනිමු! අවාසනාවකට මෙන්, ඔබට මෙවැනි ආරම්භයක් මත විශ්වාසය තැබිය නොහැක, dමන්ද එයින් අදහස් වන්නේ ඔබේ ක්‍රියාකාරිත්වය නැවත භාවිතා කළ නොහැකි බවයි. සරල කෙනෙක් d=0;එය නිවැරදි කළ යුතුයි.
මාටින් එන්ඩර්

මෙම නඩුවේ නැවත භාවිතා කිරීම හෝ නඩත්තු කිරීම වඩා වැදගත් දැයි මට විශ්වාස නැත. නැවත භාවිතා කිරීමේ හැකියාව වඩා වැදගත් නම්, මම විචල්‍ය ප්‍රකාශයන් ශ්‍රිතය තුළට ගෙනයමි, එවිට ආරම්භය කියවනු void f(){int c,d=0;[...]ඇත. ඕනෑම අවස්ථාවක, ධාරාව මිය යයි, එබැවින් සංස්කරණයක් පිළිවෙලට තිබේ!
එරික් එෆ්

ඔබගේ කාලය තුළ ඔබට අවශ්‍යද? ඔබ f (NULL) සමඟ ඇමතුවේ නැත්නම් එය NULL බවට පත්විය නොහැක
RiaD


!! වනු ඇත! ඔබ ටී අනුපිළිවෙල
පෙරළා

4

හස්කල් , බයිට් 92 යි

import Data.Char
g x|x<'['=toLower x|1>0=toUpper x
f(a:b)|elem a"aA"=f$g<$>b|1>0=a:f b
f x=x

එය මාර්ගගතව උත්සාහ කරන්න!

පැහැදිලි කිරීම

පළමුවෙන්ම අපි ප්‍රකාශ gකරන්නේ කුඩා අකුර ඉහළ අකුරටත්, ලොකු අකුර කුඩා අකුරටත් සිතියම් ගත කරන ශ්‍රිතයයි. මෙය ඇත්ත වශයෙන්ම අපගේ අතුරු ගණන් වලින් බහුතරයකි. එවිට අපි ශ්‍රිතය අර්ථ දක්වමු f. ආදානය අප fකරන ආකාරයෙන් a:bනම්

f(a:b)
 |elem a"aA"=f$g<$>b
 |1>0=a:f b

aහා Aපළමු රටාව ගැලපෙන හා ඒ නිසා අප විසින් අදාළ fඑය නඩුව යටිකුරු සමග ආදාන. එසේ නොමැතිනම් අපි aඉදිරියෙන් පිටතට ගොස් අදාළ fවේ b.



4

වුල්ෆ්රාම් භාෂාව (ගණිතය) , බයිට් 70 යි

#//.{x___,"a"|"A",y___}:>Join[{x},ToUpperCase@#+ToLowerCase@#-#&@{y}]&

එය මාර්ගගතව උත්සාහ කරන්න!

ආදාන සහ ප්‍රතිදානය අක්ෂර ලැයිස්තුවක් ලෙස ගනී. පහසුව සඳහා මම පාදයේ සිට කේතයක් එකතු කර මෙය නූල් සිට ආපසු හරවන්නෙමි.

එය ක්‍රියාත්මක වන ආකාරය

මෙම #//.{x___,"a"|"A",y___}:>Join[{x},... {y}]&කොටසක් සම්මත වේ: අපි පළමු සොයා A(ඉංග්රීසි කැපිටල් හෝ සිම්පල්), ඒ පිටුපස නඩුව පසුව එන A, සහ නැවත එහි සිටියේ නැත තෙක් Aසොයා ගත හැකි ගේ.

සිත්ගන්නා කරුණ නම් අපි නඩුව ආපසු හරවන ආකාරයයි: ශ්‍රිතය ToUpperCase@# + ToLowerCase@# - #&. අපි ආදානයේ ඉහළ-කේස් අනුවාදය සහ ආදානයේ පහළ-කේස් අනුවාදය එකතු කර සත්‍ය ආදානය අඩු කරන්නෙමු. උදාහරණයක් ලෙස, {"I","n","P","u","T"}මෙය ගණනය කරන ලැයිස්තුවට අනුව

{"I","N","P","U","T"}+{"i","n","p","u","t"}-{"I","n","P","u","T"}

ලැයිස්තු වලට වඩා නූල්

{"I"+"i"-"I","N"+"n"-"n","P"+"p"-"P","U"+"u"-"u","T"+"t"-"T"}

Mathematica නූල් දෙකක් එකතු යම් විශේෂිත ක්රමයක් නැහැ නමුත් සහ, එය සරල කිරීම සඳහා ස්මාට් ප්රමාණවත් a+b-aකිරීමට bඕනෑම වටිනාකම් සඳහා aසහ bඈඳීම ඇතුළු, ඒ නිසා මෙම සරළ කිරීමට {"i","N","p","U","t"}.


4

රූබි , බයිට් 42 41

->s{s.sub!(/a(.*)/i){$1.swapcase}?redo:s}

එය මාර්ගගතව උත්සාහ කරන්න!

බැටළු පැටවෙක් නූලක් භාරගෙන, එම ස්ථානයේ ඇති විකෘතිය විකෘති කොට එය ආපසු ලබා දෙයි. මෙහි ඇති උපක්‍රමය subනම් ආදේශකයක් සිදු කර ඇත්නම් නූල (සත්‍ය වටිනාකමක්) ලබා දීම සහ nilවෙනත් ආකාරයකින් ආපසු යාමයි . පැවැත්මswapcase ඉතා පහසු ය.

-1 බයිට්: අසෝන් ටුහිඩ්ට ස්තූතිවන්ත වන පරිදි බූලියන් තර්කනය ත්‍රික ක්‍රියාකරු සමඟ ප්‍රතිස්ථාපනය කරන්න

->s{
  s.sub!(/a(.*)/i){     # Replace "a" followed by anything with
    $1.swapcase         #   the case-swapped capture group
  } ? redo              # If a match was found, restart the block
    : s                 # Otherwise, return the modified string
}

බයිට් 1 ක් ඉතිරි කරන්න . මම සියලු පරීක්ෂණ අවස්ථා ඇතුළත් කළහොත් සබැඳිය දිගු විය.
අසෝන් තුහිඩ්

SAsoneTuhid ස්තූතියි ... මේ දිනවල මට ත්‍රිමාණ ක්‍රියාකරු කෙලින්ම භාවිතා කිරීමට මතකයි, එබැවින් ඔබ මට මතක් කිරීමට අවශ්‍ය නොවනු ඇත.
benj2240

4

PHP 101 99 බයිට්

for($s=$argn;$i<strlen($s);$i++)lcfirst($s[$i])==a?$s=strtolower($s)^strtoupper($s)^$s:print$s[$i];

මේ ආකාරයට දුවන්න:

echo '[the input]' | php -nR '[the code]'

Ungolfed:

for ($s = $argn; $i < strlen($s); $i++) {
    if (lcfirst($s[$i]) == 'a') {
        $s = strtolower($s) ^ strtoupper($s) ^ $s; // Flip the whole string's case.
    } else {
        print $s[$i]; // Print the current letter.
    }
}

මෙය හුදෙක් ලූපයක් සමඟ නූල හරහා ලූප වන අතර, එක් එක් පුනරාවර්තනයේදී එය වත්මන් අකුරදැයි පරීක්ෂා කරයි a, එසේ නම්, මුළු නූලම ( මෙහි සිට ක්‍රමය ) පෙරළන්න , නැතිනම් වත්මන් ලිපිය මුද්‍රණය කරන්න.


1
කේත ගොල්ෆ් සඳහා වන සම්මුතිය නම් සියලුම කේත ඇතුළත් කළ යුතුය. මාර්ගයෙන් ඔබ කාර්යය පරාමිතිය ලෙස ආදාන ගැනීමට සහ ඇත්ත වශයෙන්ම උත්සවයකට ප්රකාශ (php දී කාර්යය ඉඟි පද හරහා) හෝ සම්පූර්ණ විධානාවලිය සතුව (උදා: භාවිතා ඇති බව $argn, $argv, $_GET). එබැවින් මේ මොහොතේ මෙය නිවැරදි ඉදිරිපත් කිරීමක් නොවේ. නැවත පැමිණීම echoසංස්කරණය හෝ returnසංස්කරණය කළ යුතුය (c හි කාර්යයන් සඳහා පමණක් අවසර ඇත).
ක්‍රිස්ටෝෆ්

1
ක්‍රිස්ටෝෆ්ට ස්තූතියි, මම ගොල්ෆ් ක්‍රීඩාවට අලුත් කෙනෙක් :). මම දැන් මගේ පිළිතුර යාවත්කාලීන කර ඇත්තෙමි, වෙනත් දෙයක් වැරදිදැයි මට දන්වන්න.
ඊතන්

H ක්‍රිස්ටෝෆ් වාව්! 75! ඉතා කදිමයි! ඔබට මගේ +1 ඇත :)
ඊතන්

4

ජෙලි , බයිට් 14 යි

Œu=”Aœp⁸ŒsJḤ$¦

එය මාර්ගගතව උත්සාහ කරන්න!

සම්පූර්ණ වැඩසටහන.

පැහැදිලි කිරීම:

Œu=”Aœp⁸ŒsJḤ$¦ Arguments: x
Œu             Uppercase x
  =”A          ^ Equals 'A' (vectorizes)
     œp⁸       ^ Partition ⁸ [⁸=x]
             ¦ Apply link A, keep results at specific indices B
        Œs     A: Swap case
            $  B: Form a >=2-link monadic chain
          JḤ      Arguments: y
          J       Get list indices ([1, length(list)]) of y
           Ḥ      Double (vectorizes) ^
                  This way, we only "apply" link A to even indices, so every second
                  element, starting from the secondd one.

කේතය පැහැදිලි කිරීම?
එස්කේ 19

1
K SK19 පැහැදිලි කිරීමක් එක් කළේය.
එරික් ද අවුට්ගොල්ෆර්

4

MATL , බයිට් 23 20

'a A'Yb&Ybt2L)Yo2L(g

එය මාර්ගගතව උත්සාහ කරන්න!

පැහැදිලි කිරීම:

'a A'Yb   % form a cell array containing {'a', 'A'}
&Yb       % split input into substrings, with either of those ('a' or 'A') as delimiters
t2L)      % extract out the even positioned cells from that result
Yo        % switch the case of those substrings
2L(       % place the result back in even positioned cells of the original cell array
g         % convert cell array to matrix, concatenating all substrings in the process
          % implicit output

පැරණි පිළිතුර (බයිට් 23):

"H a 'aA'm? ~ XHx} @ w ~? Yo] & h

මම උත්සාහ කළ වෙනත් ක්‍රම:

0w"@t'aA'm?x~}y?Yo]w]]xv!
t'aA'mXHYsot&y*XzcYowf([]H(
t'aA'mXHYsoy3Y2m*32*Z~c[]H(

3

ලෙල්ල , බයිට් 15 යි

ω(F·+otm\↕·≠_'a

එය මාර්ගගතව උත්සාහ කරන්න!

පැහැදිලි කිරීම

ω(F·+(tm\)↕·≠_'a) -- example input: "Bar, baz and Foo."
ω(              ) -- apply the following, until fixpoint is reached:
          ↕       -- | split string with predicate
           · _    -- | | the lower-cased character
            ≠ 'a  -- | | is not 'a'
                  -- | : ("B","ar, baz and Foo.")
  F               -- | apply the following to the tuple
    +             -- | | join the elements with..
   · (   )        -- | | ..the second element: "ar, baz and Foo."
       m\         -- | | | swap case: "AR, BAZ AND fOO."
      t           -- | | | tail: "R, BAZ AND fOO."
                  -- | : "BR, BAZ AND fOO."
                  -- : "BR, Bz ND fOO."

3

ජැප්ට් v2.0a0, බයිට් 16 යි

e/a.*/i_År\l_c^H

උත්සහ කරන්න


පැහැදිලි කිරීම

e                   :Recursively replace
 /a.*/i             :RegEx /a.*/gi
       _            :Pass each match through a function
        Å           :  Slice off the first character
         r          :  Replace
          \l        :  RegEx /[A-Za-z]/g
            _       :  Pass each match though a function
             c^     :    Bitwise XOR the character code
               H    :    With 32

3

PHP 4, 77 76 75

foreach(spliti(a,$argn)as$b)echo$a++&1?strtoupper($b)^strtolower($b)^$b:$b;

විසින් උපස්ථර වලට බෙදන්න A (නඩුව අසංවේදී) ඉන් පසු සෑම දෙවන නඩුව toogle.

එය මෙතැනින් උත්සාහ කරන්න .


පැරණි අනුවාදය

for(;a&$c=$argn[$i++];)trim($c,aA)?print($c^chr($f*ctype_alpha($c))):$f^=32;

වැල පුරා ඇවිදින සහ වත්මන් කටු නම්, ධජ toogles aහෝ Aඅන් කටු ධජ මත පදනම්ව toogled හා ප්රතිරාවය යයි.


3

SNOBOL4 (CSNOBOL4) , බයිට් 141 92

	I =INPUT
S	I ANY("Aa") REM . R =REPLACE(R,&LCASE &UCASE,&UCASE &LCASE) :S(S)
	OUTPUT =I
END

එය මාර්ගගතව උත්සාහ කරන්න!

තනි ආදාන පේළියක් උපකල්පනය කරයි.

Inninjalj විසින් ඉතිරි කරන ලද බයිට් 49 ක් !

රේඛාව Sසියළුම කාර්යයන් කරයි, පහත විස්තර කර ඇත:

I                    # in the subject string I match the following PATTERN:
 ANY("Aa")           # match A or a and
 REM . R             # match the remainder of I, assigning this to R
 =REPLACE(           # replace the PATTERN above with
          R, ...)    # R with swapped cases.
   :S(S)             # and if there was a match, goto S, else goto next line 


මෙය වැරදි පිළිතුරක් ලබා දෙයි (ඔබ ඔබේ අදහසෙහි සඳහන් කළ පරිදි, කැප්ස්ලොක් ක්‍රියාත්මක වන විට නඩුව මාරු වේ)
mbomb007

කැප්ස්ලොක් සක්‍රිය කර ඇති විට (සරලවම ලොකු අකුරට වඩා) සිද්ධි මාරු කිරීම අවශ්‍ය වන පරිදි මම මෙම ලිපිය සංස්කරණය කර ඇත්තෙමි.
බ්‍රෝඩ්වෙල්

OP mbomb007 අහ්, OP එය වෙනස් කර ඇති බව මම දැන සිටියේ නැත; මම දැන් පැහැදිලි කිරීමක් සඳහා සංස්කරණය කරමි, එබැවින් මම එය පැහැදිලි කිරීමෙහි ඇතුළත් කරමි.
ගුසෙප්

I =INPUT;S I ANY("Aa") REM . R =REPLACE(R,&LCASE &UCASE,&UCASE &LCASE) :S(S); OUTPUT =I;END
ninjalj

@ninjalj ඔබ එය SNOBOL නොවන ගොල්ෆ් හෝ එය ෙගොල්ෆ් දී මම දරුණු මම ??
ගුසෙප්

3

ෆෝට්රාන් (GFortran) , බයිට් 307

CHARACTER(999)F,G
G=' '
READ(*,'(A)')F
N=1
M=1
DO I=1,999
IF(F(I:I)=='a'.OR.F(I:I)=='A')THEN
M=-M
ELSEIF(M==1)THEN
G(N:N)=F(I:I)
N=N+1
ELSE
J=IACHAR(F(I:I))
SELECTCASE(J)
CASE(65:90)
G(N:N)=ACHAR(J+32)
CASE(97:122)
G(N:N)=ACHAR(J-32)
CASE DEFAULT
G(N:N)=F(I:I)
ENDSELECT
N=N+1
ENDIF
ENDDO
PRINT*,TRIM(G)
END

එය මාර්ගගතව උත්සාහ කරන්න!

ෆෝට්රාන් නූල් සමඟ කටයුතු කිරීම සඳහා "උසස්" මෙවලම් නොමැති බැවින්, මම මෙම කුඩා රාක්ෂයා සමඟ පැමිණියෙමි.

ඉන්ඩෙන්ට් කර අදහස් දැක්වීය:

CHARACTER(999)F,G	!Define input and output strings (up to 999 characters)
G=' '			!Fill output with spaces
READ(*,'(A)')F		!Take input
N=1			!Represent the position to be written in output string
M=1			!M=-1: Change case; M=1: Do not change case
DO I=1,999
	IF(F(I:I)=='a'.OR.F(I:I)=='A')THEN	!If the character is A...
		M=-M				!Ah-ha - you pressed cPS-LOCK!
	ELSEIF(M==1)THEN			!Case the character is not A, and do not need to change case...
		G(N:N)=F(I:I)			!...only copy the character
		N=N+1
	ELSE !Otherwise...
		J=IACHAR(F(I:I))			!...get ascii of current character
		SELECTCASE(J)
			CASE(65:90)			!If is upper case,
				G(N:N)=ACHAR(J+32)	!now is lower case
			CASE(97:122)			!If is lower case,
				G(N:N)=ACHAR(J-32)	!now is upper case
			CASE DEFAULT			!If do not belong to alphabet,
				G(N:N)=F(I:I)		!simply copy the character
		ENDSELECT
		N=N+1
	ENDIF
ENDDO
PRINT*,TRIM(G) !Trim out trailing spaces
END !That's all folks!

3

ස්ටැක්ස් , බයිට් 12 යි

ìo'½`║â↨╪U?5

එය සබැඳිව ධාවනය කර නිදොස් කරන්න

එය රීජෙක්ස් මත බෙදී පසුව විකල්පයක් ටොගල් කරයි. මෙන්න එකම වැඩසටහන, අසුරන ලද, නොකැඩූ, සහ අදහස් දැක්වූ.

"a|A"|s split on regex /a|A/
rE  reverse and explode array to stack
W   repeat forever...
p   print top of stack with no newline
:~p print top of stack, case inverted, with no newline

මෙය ක්‍රියාත්මක කරන්න


මට කෙසේ හෝ ඔබේ පැහැදිලි කිරීම ඔබේ කේතයට සම්බන්ධ කළ නොහැක.
එස්කේ 19

අදහස් දැක්වූ තැනැත්තා හරහා ගමන් කිරීමට උත්සාහ කරන්න, සහ පරිවර්තකයාගේ අභ්‍යන්තර තත්වය නිරීක්ෂණය කරන්න. එය උපකාරවත් වේද?
පුනරාවර්තන

1
@ SK19: ඔහ්, මම හිතන්නේ මම ගැටලුව දකිනවා. ස්ටැක්ස් වැඩසටහන් සඳහා නිරූපණ දෙකක් ඇති බව මා සඳහන් කළේ නැත. Ascii සහ ඇසුරුම්. මේ දෙක අතර පාඩු නැති පරිවර්තනයක් තිබේ. සංකේත 95 ක් පමණක් ඇති බැවින් Ascii ටයිප් කිරීම පහසුය, නමුත් ගොල්ෆ් සඳහා නාස්තියකි. ගොල්ෆ් කරන ලද වැඩසටහන ඇසුරුම් කර ඇති බැවින් එය වෙනස් ලෙස පෙනේ, නමුත් එය එකම වැඩසටහනකි.
පුනරාවර්තන

3

ජාවාස්ක්‍රිප්ට් (ඊඑස් 6), බයිට් 80 79

( රික් හිච්කොක්ගේ මෙම පිළිතුරෙන් අර්ධ වශයෙන් පදනම් වී ඇත . මට අදහස් දැක්වීමට ප්‍රමාණවත් කීර්තියක් නොමැති නිසා වෙනම පිළිතුරක් ලෙස පළ කිරීම.)

( මෙහි @ l4m2 හි පෝස්ටයට ස්තූතියි බයිට් 1 ක් ඉතිරි කර ඇත .)

a=>a.replace(j=/a()|./gi,(c,o=c[`to${j^c>{}?'Low':'Upp'}erCase`]())=>(j^=!o,o))

PPCG වෙත සාදරයෙන් පිළිගනිමු!
ලයිකෝනි

2

අපිරිසිදු , බයිට් 55 යි

⇙U◌␛⮕⇨'aA'⇗⭱∈⊭⋱2wẂ[⭱y⋱1wx⮕⭧]
    \   ␛◌Ẃ!w1/      \1wX/

එය මාර්ගගතව උත්සාහ කරන්න!

බොහෝ විට තුනෙන් එකක් පමණ කෙටි විය හැකිය.
මම ඩෙස්ක්ටොප් එකක සිටින විට පැහැදිලි කිරීමක් සහ ගොල්ෆ් කිහිපයක් ලියන්නම්.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.