ลบการเกิดขึ้นทั้งหมดของตัวอักษรตัวแรกของสตริงจากสตริงทั้งหมด


24

รับสายเข้าเฉพาะที่มีตัวละครA-Z, a-zและช่องว่างเอาเหตุการณ์ที่เกิดขึ้นทั้งหมดของตัวพิมพ์ใหญ่และพิมพ์เล็กรุ่นของตัวอักษรตัวแรกของสตริง (ถ้าตัวอักษรตัวแรกเป็นAลบทั้งหมดAและas ถ้าตัวอักษรตัวแรกคือ(เว้นวรรค) ลบ ช่องว่างทั้งหมด) และพิมพ์ผลลัพธ์

ตัวอย่างกรณี:

  • Testing Testing One Two Three -> esing esing One wo hree
  • Programming Puzzles and Code Golf -> rogramming uzzles and Code Golf
  • How much wood would a woodchuck chuck if a woodchuck could chuck wood -> ow muc wood would a woodcuck cuck if a woodcuck could cuck wood
  • {space}hello world -> helloworld
  • welcome to WATER WORLD -> elcome to ATER ORLD

นี่คือรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ!

หมายเหตุ:

  • ข้อมูลที่ป้อนจะต้องเป็นอักขระที่ถูกต้อง 2 ตัวขึ้นไปเสมอ
  • เอาต์พุตจะไม่เป็นสตริงว่าง

เราจำเป็นต้องจัดการกับเคสที่เอาต์พุตเป็นสตริงว่างหรือไม่? ถ้าอินพุตเป็นสตริงว่าง
lirtosiast

@ThomasKwa คุณอาจสันนิษฐานว่าเอาต์พุตจะมีความยาวตั้งแต่ 2 ตัวอักษรขึ้นไป
GamrCorps

@ThomasKwa และการส่งออกจะไม่ว่างเปล่า
GamrCorps

คำตอบ:


9

Pyth, 7 ไบต์

-zrBhz2

ลองใช้ออนไลน์: การสาธิตหรือชุดทดสอบ

ดี ตัวดำเนินการสองทางแบบใหม่ (อายุเพียง 8 วัน) ช่วยประหยัดถ่านได้หนึ่งอัน ฉันคิดว่านี่เป็นรหัสแรกที่ใช้คุณสมบัตินี้

คำอธิบาย

-zrBhz2   implicit: z = input string
    hz    take the first character of z
  rB  2   B generates a list, containing the original char and the  
          result of r.2 applied to the char, which swaps the case
-z        remove these two chars from z and print the result 

2
เรียบร้อยไม่ทราบเกี่ยวกับสิ่งนั้น +1
FryAmTheEggman

14

brainfuck, 219 ไบต์

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

(ต้องใช้เทปที่อนุญาตให้ตัวชี้ไปที่เนกาทีฟหรือลูปไปจนจบถ้าพยายามนอกจากนี้ยังต้อง,ส่งคืน 0 ที่ EOF จากประสบการณ์ของฉันล่ามส่วนใหญ่จะปฏิบัติตามข้อกำหนดเหล่านี้ตามค่าเริ่มต้น)

นี่กลายเป็นเรื่องง่ายไปแล้ว! ฉันจะไม่แปลกใจถ้ามันสามารถเล่นได้ (ฉันมีความคิดบางอย่างที่อาจมีการสูญเสียไบต์ แต่ฉันไม่แน่ใจว่ามันจะทะลักออกมา) ถึงกระนั้นการได้ผลก็ไม่ได้เป็นความท้าทาย แต่อย่างใด

รหัสนี้ปฏิบัติกับทุกสิ่งด้วยค่า ASCII ต่ำกว่า 97 เป็นอักขระตัวพิมพ์ใหญ่ หากอักขระตัวแรกคือช่องว่างมันจะพยายามลบการเกิด "ช่องว่างเล็ก ๆ " (เช่นchr(32+32)ie @) ออกจากสตริง ไม่เป็นไรเพราะจะมีเพียงตัวอักษรและช่องว่างเท่านั้น

ด้วยความคิดเห็น:

to make comments shorter: everywhere it says "fc" means "first character"

#################################### GET FC ####################################

+[+[>+<+<]>]        shortest way to get 96
                    any number above 89 and less than 97 would work because this
                    is only for figuring out if the first character is capital

,[<+<+>>-]          create two copies of the first character


### current tape: | fc | fc | 000 | 096 | ###
###      pointer:              ^          ###

########################### FIND MAX(FC MINUS 96; 0) ###########################


>[                  96 times:

  <<                  go to the cell with the first char

  [->]                if not 0: sub one and move right


  ### current tape: | fc | char being worked on | 000 | 096 | ###
  ###      pointer:                           ^ OR ^          ###      


  >[<]>               collapse the wavefunction; sync the branches

-]


### current tape: | fc | fc is lowercase ? nonzero : zero | 000 | 000 | ###
###      pointer:                                                  ^    ###

############################# GET BOTH CASES OF FC #############################

++++[<++++++++>-]   get 32 (add to uppercase character to get lowercase)

<<[                 if the character is already lowercase:

  [-]                 clear the lowercase flag

  ----[>-<----]>-     sub 64 from the cell with 32

<]

<[>+>+<<-]          add fc to the 32 or minus 32 to get both cases


### current tape: | 000 | fc | other case of fc | ###
###      pointer:    ^                            ###

###################### LOOP THROUGH REMAINING CHARACTERS #######################

<,[                 for each character:

  [>+>>>+>>+>+<<<<<<<-]
                      make four copies
                      (only 3 are strictly needed; 4th will resync a branch)

  >>                  go to the first case of fc

  [<<+>>-]<<[>->+<<-] subtract one case of fc from one copy

  >[[-]+<]            if the result is nonzero set it to 1

  >[>]<<              go to the other case of fc (and resync branches)

  [>>+<<-]>>[<-<+>>-] subtract other case of fc from other copy

  <[[-]+>]            if the result is nonzero set it to 1

  >>[<]               resync branches using extra copy

  <<<<[>>>+<<<-]>>>   add results together

  -                   subtract 1

   if the character exactly matched either case: 1 plus 0 minus 1 = 0
  if the character exactly matched neither case: 1 plus 1 minus 1 = 1
    if the character exactly matched both cases: impossible

  [                   if the result is 1:

    >>.<<               output character

    -                   set cell to 0 to kill loop

  ]

  >>>[[-]<]           clean up remaining copies

  <<<<<,              get next character; or end loop if done

]

กรุณาอย่าลงกอล์ฟนี้เกินไปมาก c: ฉันทำงานหนักมาก ...
Addison Crump

13

Perl, 13 ไบต์

#!perl -p
/./,s/$&//gi

นับ Shebang เป็นหนึ่งจะถูกนำเข้าจาก stdin


ตัวอย่างการใช้งาน

$ echo Testing Testing One Two Three | perl remove-first.pl
esing esing One wo hree

$ echo \ Testing Testing One Two Three | perl primo-remove.pl
TestingTestingOneTwoThree

ดี ฉันคิดว่า Perl อาจจะทำอะไรไม่ดีได้เพราะต้องเขียนsubstrแต่แน่นอนคุณต้องหาวิธีที่ดีกว่านี้มาก!
ฮอบส์

ทำไมคุณถึงนับ hashbang เป็นหนึ่งไบต์?
Zereges

@Zereges บรรทัด shebang perl -p script.plที่ไม่จำเป็นถ้าสคริปต์ที่ถูกเรียกว่าเป็น ตัวเลือกบรรทัดคำสั่งจะถูกนับตามปกติเป็นหนึ่งไบต์อย่างน้อยในเว็บไซต์นี้
primo

@primo ฉันเห็นขอบคุณ
Zereges

10

CJam, 8 ไบต์

q(_32^+-

ลองใช้ออนไลน์ในล่าม CJam

มันทำงานอย่างไร

q        e# Read all input from STDIN.
 (       e# Shift out the first character.
  _32^   e# Push a copy and XOR its character code with 32.
         e#   For a letter, this swaps its case.
         e#   For a space, this pushes a null byte.
      +  e# Concatenate these two characters.
       - e# Remove all occurrences of both from the input string.

ฉันเริ่มสร้างความท้าทายนี้เพื่อเรียนรู้ CJam และฉันไม่เคยรู้เกี่ยวกับสิ่ง XOR!
GamrCorps

2
โดยส่วนตัวแล้วฉันพบว่ามันน่าแปลกใจที่ภาษาใดก็ตามยกเว้นอาจจะไม่สามารถเอาชนะได้ด้วยความท้าทายนี้
โม่

@primo - คุณไม่ได้สังเกตเห็นว่า CJam และ / หรือ Pyth ชนะไป 99% Perl ทำได้ค่อนข้างดีแม้ว่าการพิจารณาว่าเป็นภาษาเดียวที่ไม่ได้ออกแบบมาเป็นพิเศษสำหรับการเล่นกอล์ฟ
Darrel Hoffman

การบรรทุกเกินพิกัดของ Pyth และ CJam นั้นไร้สาระ ลบ (สตริง, สตริง) ที่ดำเนินการลบต่ออักขระไม่ใช่การดำเนินการหลักในภาษาอื่นที่ฉันได้พบ
Sparr

@Sparr APL มีในตัวเดียวกัน (มันถูกเรียกว่า~.)
Dennis

7

Pyth, 8 ไบต์

-zr*2hz3

ลองออนไลน์

ใช้รุ่น Pyth ของ ธการแปลงสตริงของตัวอักษรตัวแรกละสองครั้งลงในแบบฟอร์มstr.title "<Upper><Lower>"จากนั้นจะลบแต่ละองค์ประกอบออกจากอินพุตที่อยู่ในสตริงนั้น str.titleช่องว่างทำงานได้ดีเพราะพวกเขาจะได้รับผลกระทบจาก



5

JavaScript (ES6), 38 36 ไบต์

สิ่งนี้ไม่ได้ขึ้นอยู่กับflagsพารามิเตอร์ซึ่งเป็น Mozilla เฉพาะ

f=x=>x.replace(RegExp(x[0],'gi'),'')

CoffeeScript ขนาด39 37 ไบต์

ครั้งหนึ่งมันสั้นกว่าใน JS มากกว่า CoffeeScript!

f=(x)->x.replace RegExp(x[0],'gi'),''

3
อย่างน้อยในเบราว์เซอร์ที่ฉันลองใช้newเป็นตัวเลือกดังนั้นจึงRegExp(x[0],'gi')สั้นกว่า
Neil

4

PHP, 41 ไบต์

รับอาร์กิวเมนต์บรรทัดคำสั่งหนึ่งรายการ ต้องเปิดใช้งานแท็กเปิดสั้น ๆ สำหรับ PHP <5.4

<?=str_ireplace($argv[1][0],'',$argv[1]);

1
คุณสามารถย่อให้สั้นลงได้โดยประกาศตัวแปรที่มี$argv[1]:<?=str_ireplace(($a=$argv[1])[0],'',$a);
เบอนัวต์เอสนาร์ด

3

Perl, 27 ไบต์

นี่เป็นโปรแกรมที่สมบูรณ์แม้ว่าจะใช้ 2 regexes ที่สามารถคัดลอกลงในโปรแกรม Retina เพื่อบันทึกไบต์บน I / O

$_=<>;m/(.)/;s/$1//gi;print

แก้ไข: ดูเหมือนว่านี้มีใครบางคนใช้-pตัวเลือกนี้แล้ว Oh, และใช้แทน$&$1


1
แม้ว่า shebang ทั้งหมดจะถูกนับ (เช่น "สมบูรณ์" โปรแกรม) ยังคงเป็นสองไบต์สั้นกว่า#!perl -p $_=<>;print
primo

@primo ฉันไม่เคยใช้ตัวเลือกใด ๆ ในสนามกอล์ฟของฉัน ฉันเพิ่งทำสิ่งที่-pตัวเลือกทำ ไม่มีการแก้ไขใด ๆ ที่ฉันสามารถทำกับคำตอบของฉันได้โดยไม่ต้องทำให้เหมือนคุณ
PhiNotPi

3

Minkolang 0.9 , 23 33 ไบต์

ไม่มีทางที่จะชนะ แต่มันสนุก!

" Z"od0c`1c*-$I[odd0c`1c*-2c=?O].

ลองที่นี่

คำอธิบาย

" Z"                                 Makes it easier to uppercase
    od                               Take first character of input and duplicate
      0c`1c*-                        Uppercase if needed
             $I[               ]     Loop over the input
                odd                  Take character from input and duplicate twice
                   0c`1c*-           If it's lowercase, uppercase it.
                          0c=?       Check to see if it's equal to first character
                              O      If not, output as character
                                .    Exit

(กรณีนี้อาจล้มเหลวในบางกรณีเช่นกรณีที่อักขระตัวแรกเป็นสัญลักษณ์)


3

TECO , 15 14 ไบต์

กำลังแก้ไขข้อความ? เมื่อมีข้อสงสัยให้ใช้โปรแกรมแก้ไขข้อความและแก้ไขข้อผิดพลาด!

หลังจากลองผิดลองถูก (ส่วนใหญ่เป็นข้อผิดพลาด) ฉันคิดว่านี่เป็นโปรแกรม TECO ทั่วไปที่สั้นที่สุดที่จะทำงานได้

0,1XA<S^EQA$-D>

หรือในรูปแบบที่มนุษย์อ่านได้

0,1XA    ! Read the first character of the string into the text area of !
         ! Q-buffer A.                                                  !
<        ! Loop,                                                        !
S^EQA$   ! searching for the text in Q-buffer A in either lowercase or  !
         ! uppercase,                                                   !
-D       ! and deleting it,                                             !
>        ! until the search fails.                                      !

$แสดงให้เห็นถึงปุ่มหลบหนีและ^Eหมายถึงลำดับ+CTRL Eขึ้นอยู่กับรสชาติของ TECO ที่คุณใช้มันอาจรู้จักการแทนที่ ASCII เหล่านี้หรือไม่ก็ได้

ตามคู่มือภาษาถิ่นของ TECO บางรุ่นยอมรับรุ่น 13 ไบต์นี้ (ใช้คำสั่ง find-and-delete แทนคำสั่ง "find" และ "delete" แยกต่างหาก) แทน:

0,1XA<FD^EQA$>

3

Pip, 8 ไบต์

aR-Xa@0x

รับสายเป็นอาร์กิวเมนต์บรรทัดคำสั่ง (จะต้องถูกยกมาถ้ามันมีช่องว่าง) คำอธิบาย:

          a gets cmdline arg; x is "" (implicit)
    a@0   First character of a
   X      Convert to regex
  -       Make regex case-insensitive
aR     x  Replace all matches of that regex in a with empty string
          Autoprint (implicit)

การแก้ปัญหานี้มีโบนัสพิเศษของการทำงานในสายที่มีใดตัวอักขระ ASCII ( Xเครื่องหมายแบ็กสแลช - Escape อะไรที่ไม่ใช่ตัวอักษรและตัวเลข)



3

Julia, 34 ไบต์

s->replace(s,Regex(s[1:1],"i"),"")

สิ่งนี้จะสร้างฟังก์ชั่นที่ไม่มีชื่อที่ยอมรับสตริงและส่งคืนสตริง มันสร้างการแสดงออกปกติกรณีที่ไม่สำคัญจากตัวอักษรตัวแรกในการป้อนข้อมูลและแทนที่เกิดขึ้นทั้งหมดของมันด้วยสตริงที่ว่างเปล่า



2

R, 43 ไบต์

cat(gsub(substr(s,1,1),"",s<-readline(),T))

นี่เป็นโปรแกรมเต็มรูปแบบที่อ่านบรรทัดจาก STDIN และเขียนผลลัพธ์ที่แก้ไขไปยัง STDOUT

Ungolfed:

# Read a line from STDIN
s <- readline()

# Replace all occurrences of the first character with an empty
# string, ignoring case
r <- gsub(substr(s, 1, 1), "", s, ignore.case = TRUE)

# Write the result to STDOUT
cat(r)

2

ทับทิมขนาด 25 ไบต์

ฟังก์ชั่นไม่ระบุชื่อ:

->s{s.gsub /#{s[0]}/i,""}

โปรแกรมเต็มรูปแบบ, 29 ไบต์:

puts gets.gsub /#{$_[0]}/i,""

2

Python 61 ไบต์ (มากเกินไป)

lambda x:"".join(map(lambda y:(y.lower()!=x[0].lower())*y,x))

ฉันคิดว่าจะมีวิธีที่ดีกว่าในการทำสิ่งนี้ แต่ดูเหมือนจะหาไม่เจอ คิดใด ๆ ในการลบ"".join(...)?


1
@ThomasKwa บางทีคุณควรส่งนั่นเป็นคำตอบของคุณเอง; ดูเหมือนว่าจะแตกต่างจากของฉันมากเกินไปที่จะนับว่าเป็นของฉัน
โคล

@ThomasKwa x[0]+x[0].swapcase()สั้นที่จะทำ
xnor

1
@ThomasKwa หรือขโมยมาจากวิธีการแก้ปัญหา Pyth FryAmTheEggman (x[0]*2).title()ของ
xnor

@ xnor ใช่ฉันพบว่าเมื่อฉันอ่านพวกเขาไม่กี่ชั่วโมงที่ผ่านมา
lirtosiast

lambda x:x.replace(x[0].upper(),'').replace(x[0].lower(),'')- 60 ไบต์
Mego

2

Ouroboros , 61 ไบต์

นี่มันสั้นกว่า C ++! ฮ้า

i..91<\64>*32*+m1(
)L!34*.(;Si.1+!24*(Y.@@.@=@.@32-=\@+2*.(yo

ใน Ouroboros แต่ละโปรแกรมจะเป็นงูที่มีหางอยู่ในปาก การควบคุมการไหลสามารถทำได้โดยการกินหรือการสำรอกส่วนหางด้วยสแต็กที่แชร์เพื่อประสานระหว่างงู

งู 1

i.อ่านอักขระจากอินพุตและทำซ้ำอักขระ .91<\64>*32*ผลักดัน32ถ้าตัวละครเป็นตัวอักษรตัวพิมพ์ใหญ่0มิฉะนั้น +ในการแปลงอักขระเป็นตัวพิมพ์ใหญ่เป็นตัวพิมพ์เล็กในขณะที่ปล่อยให้ตัวอักษรตัวพิมพ์เล็กและช่องว่างไม่เปลี่ยนแปลง ทั้งหมดนี้เกิดขึ้นในกองของงู 1 ดังนั้นตอนนี้เราจึงผลักดันค่าไปยังกองซ้อนที่ใช้ร่วมกัน ( m) เพื่อให้งู 2 ประมวลผล สุดท้าย1(กินตัวละครตัวสุดท้ายของหางงู 1 เนื่องจากนั่นคือที่ที่ตัวชี้คำแนะนำอยู่งูจึงตาย

งู 2

)ไม่มีผลในครั้งแรกที่ผ่าน L!34*ดัน34ถ้ากองที่ใช้ร่วมกันว่างเปล่าเป็น0อย่างอื่น จากนั้นเรา.DUP และ(กินว่าตัวละครหลาย ๆ

  • หากสแต็กที่แชร์ว่างเปล่านี่จะทำให้จุดสิ้นสุดของงูทันทีหลังจาก(เราเพิ่งดำเนิน ดังนั้นการควบคุมวนกลับไปที่จุดเริ่มต้นของบรรทัดที่)regurgitates ตัวละครที่เราเพิ่งกิน (ก่อนหน้านี้ได้ผลักสำเนาพิเศษของ34) และทำซ้ำการทดสอบความยาวสแต็ค
  • หากสแต็กที่แชร์ไม่ว่างเปล่าจะไม่มีการกินอักขระ ';' ปล่อยส่วนเสริม0และการดำเนินการต่อไป:

Siสลับไปยังสแต็กที่แชร์และป้อนอักขระอื่น .1+!24*ดัน24ถ้าอักขระนั้นเป็น -1 / EOF 0มิฉะนั้น บน EOF (กลืน 24 ตัวอักษรรวมถึง IP และงูตาย มิฉะนั้นการดำเนินการต่อไป

Yดึงสำเนาของสแต็กด้านบนของสแต็กที่แชร์ (ตัวละครที่เราเพิ่งอ่าน) เพื่อสแต็คของงู 2 สำหรับใช้ในอนาคต จากนั้น.@@.@=@.@32-=\@+2*คำนวณว่าอักขระใหม่มีค่าเท่ากับอักขระตัวแรกหรือเป็นอักขระตัวแรกลบด้วย 32 โดยเลื่อนออก2หากใช่หรือ0ไม่ เรา.ทำซ้ำและ(กินตัวละครมากมาย:

  • หากตัวละครจับคู่กันเราจะกลับไปที่หัวงูซึ่งจะทำการ(สำรอกตัวละครทั้งสองที่เราเพิ่งกินเข้าไปและดำเนินการกับตัวละครตัวต่อไป
  • ถ้าไม่ได้เราตอบyกลับตัวละครจากกองของงู 2 oเอามันออกแล้ววนกลับ

เห็นมันในการกระทำ


2

C, 60 ไบต์

n,c,d;main(){for(;read(0,&c-n,1);n=2)d-c&31&&n&&putchar(d);}

แก้ไข: แก้ไขข้อผิดพลาดที่ทำให้เกิดการ null ไบต์ที่จะพิมพ์ที่จุดเริ่มต้น


มันไม่ได้รวบรวม?
Abr001am

1
ใช่. มันรวบรวมในเครื่องของฉัน (พร้อมคำเตือน) และใช้งานได้ คุณสามารถทดสอบได้ในหน้านี้: golf.shinh.org/check.rb
xsot

ใช่แล้ว; +1
Abr001am

2

Python 2, 43

lambda s:s.translate(None,(s[0]*2).title())

นี้จะค่อนข้างขึ้นอยู่กับคำตอบ Pyth ของฉัน แต่ก็ยังเกี่ยวข้องกับความคิดเห็นบางส่วนจาก ThomasKwa และ XNOR จากที่นี่ โพสต์ส่วนใหญ่เพราะฉันต้องการคำตอบนี้มีอยู่


2

เป็นกลุ่ม 30 Keystrokes

ขออภัยที่จะพบ แต่ฉันไม่เห็นเป็นกลุ่มคำตอบ D:

If<Right>xh@x.<Esc>"xy07|@x2|~0"xd7|@x0x

คำอธิบาย:

  1. If<Right>xh@x.<Esc>
    เขียนแมโคร (แบบเรียกซ้ำ) รอบอักขระตัวแรก
    การย้ายไปทางซ้าย ( h) จำเป็นต้องอยู่ทางด้านซ้ายของตัวอักษรที่ยังไม่ได้อ่านถัดไปการ
    เพิ่มตัวอักษรใด ๆ ( .) ตอนท้ายเป็นสิ่งจำเป็นในกรณีที่ต้องลบตัวที่สอง
  2. "xy0 คัดลอกมาโครในการลงทะเบียน x
  3. 7| ย้ายไปที่รูปที่ 7
  4. @x เรียกใช้แมโครจาก x
  5. 2|~ สลับกรณีของถ่านตัวแรก (ที่ตำแหน่งที่ 2 จริง ๆ )
  6. 0"xd7| ตัดมาโครในรีจิสเตอร์ x
  7. @x เรียกใช้แมโครจาก x
  8. 0x นำตัวยึดตำแหน่งออก .

1
:Dฉันมักจะโหวตเป็นกลุ่ม!
DJMcMayhem


1

TI-BASIC, 164 ไบต์

สำหรับเครื่องคิดเลขกราฟ TI-83 + / 84 +

Input Str1
1→X
"sub(Str1,X,1→u
"ABCDEFGHIJKLMNOPQRSTUVWXYZ zyxwvutsrqponmlkjihgfedcba
u+sub(Ans,54-inString(Ans,u),1
For(X,2,length(Str1
If 2<inString(Ans+Str1,u
Ans+u
End
sub(Ans,3,length(Ans)-2

TI-BASIC เป็นเครื่องมือที่ผิดสำหรับงาน

  • ไม่มีคำสั่งให้ลบอักขระดังนั้นเราจึงต้องวนซ้ำสตริงและต่อท้ายอักขระหากไม่ตรงกับสิ่งที่จะถูกลบ
  • มันไม่สนับสนุนสตริงที่ว่างเปล่าดังนั้นเราต้องเริ่มต้นสตริงด้วยตัวอักษรสองตัวที่จะลบออกสร้างผลลัพธ์ไปยังจุดสิ้นสุดและตัดอักขระสองตัวแรกออก
  • มันไม่มีคำสั่งเปลี่ยนตัวอักษรดังนั้นเราต้อง hardcode ตัวอักษรทั้งหมด ...
    • ครั้งที่สอง ...
    • ฉันพูดถึงตัวอักษรตัวเล็กว่าละสองไบต์ในการเข้ารหัส TI-BASIC หรือไม่

ฉันไม่แน่ใจ 100% แต่ฉันใช้เวลากว่าหกชั่วโมงในการทำสิ่งนี้และดูเหมือนจะเป็นวิธีแก้ปัญหาที่สั้นที่สุด

หากต้องการทดสอบสิ่งนี้ด้วยอินพุตที่ไม่ใช่ตัวพิมพ์ใหญ่ (หรือพิมพ์ลงในเครื่องคิดเลขของคุณ) สร้างโปรแกรมอื่นที่มีเนื้อหาAsmPrgmFDCB24DEC9และเรียกใช้โดยใช้Asm([whatever you named it]เพื่อเปิดใช้งานโหมดพิมพ์เล็ก



1

เสียงกระเพื่อมสามัญ 77

(princ(let((x(read-char)))(remove-if(lambda(y)(char-equal x y))(read-line))))

สาปแช่งชื่อฟังก์ชันยาว ๆ เหล่านี้ (และวงเล็บ (แต่ฉันยังคงรักมันอยู่ดี (: 3)))


1

C, 65 61 ไบต์

main(c,v)char**v;{for(c=**++v;*++*v;**v-c&31&&putchar(**v));}

คอมไพล์ด้วยคำเตือน argv[1]อ่านสตริงจาก ตัวอย่างออนไลน์


1
คุณสามารถร่นmain(int c,char**v)ไปmain(c,v)char**v;และจะ(**v-c)%32 **v-c&31
เดนนิส

1

C ++, 100 99 98 ไบต์

#include<ios>
int main(){for(int c,f=getchar();~(c=getchar());)tolower(c)-tolower(f)&&putchar(c);}

เพียงหนึ่งไบต์ได้รับภายใต้ 100 getchar()ผลตอบแทน-1เมื่ออ่านตอนท้ายของสตรีมเพื่อที่ว่าทำไม~อยู่ในforวงจร ( ~-1 == 0)

Ungolfed

#include <ios>
int main()
{
    for (int c, f = getchar(); ~(c = getchar()); )
        tolower(c) - tolower(f) && putchar(c);
}

คุณไม่สามารถใช้&&putchar(c)แทน?putchar(c):0?
Neil

@Neil ขอบคุณตอนนี้ฉันอายุไม่ถึง 100 ไบต์!
Zereges

@ThomasKwa แน่นอนฉันทำได้ขอบคุณ
Zereges

1
คุณสามารถทำf-c&31ตามคำตอบ C ได้ไหม?
lirtosiast

1

AppleScript, 209 201 ไบต์

การปลอบใจเพียงอย่างเดียวของฉันคือฉันเอาชนะ Brainfuck

ตั้งค่าข้อความของ "a ตอบกลับ" แสดงคำตอบเริ่มต้น "")
ตั้งค่าตัวเลขของตัวละคร
ตั้ง o เป็น ""
ทำซ้ำ n
ถ้าไม่ใช่ตัวอักษรของ n = ตัวอักษรของ 1 แล้วตั้งค่าเป็นตัวอักษรของ n & o
ตั้งค่า n เป็น n-1
ปลาย
โอ

วิธีการทำงานนี้คือการที่ผมใช้การป้อนข้อมูลผ่านaได้รับความยาวของaและทำเครื่องหมายเป็นและตั้งค่าตัวแปรเอาท์พุทn oสำหรับตัวละครที่ผมพบว่าไม่ได้มีตัวอักษรตัวแรกของ (ทุกa's character 1) ผม concatenate oมัน oพิมพ์บรรทัดสุดท้าย

หมายเหตุ: สิ่งนี้จะสนับสนุน Unicode ทั้งหมดโดยอัตโนมัติ C:


3
My only consolation is that I beat Brainfuck.ดูเหมือนว่าฉันควรเล่นกอล์ฟดีกว่า)
undergroundmonorail

1

เรติน่า 16 ไบต์

i`(.)(?<=^\1.*)

บันทึกรหัสด้วยการป้อนบรรทัดต่อท้ายและเรียกใช้ด้วยการ-sตั้งค่าสถานะ

วิธีการทำงาน: การป้อนบรรทัดต่อท้ายทำให้ขั้นตอนการเปลี่ยนเป็นเช่นนี้ซึ่งการจับคู่ใด ๆ ของ regex ที่กำหนดจะถูกแทนที่ด้วยสตริงว่าง การiเปิดใช้โหมดตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ในที่สุด regex จะจับคู่และจับอักขระเพียงตัวเดียวจากนั้นตรวจสอบว่าอักขระตัวแรกในสตริงนั้นเหมือนกัน (มากถึงกรณี) โดยใช้ backreference

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.