Xóa tất cả các lần xuất hiện của chữ cái đầu tiên của chuỗi khỏi toàn bộ chuỗi


24

Với một chuỗi đầu vào chỉ chứa các ký tự A-Z, a-zvà không gian, loại bỏ tất cả các lần xuất hiện của chữ hoa và chữ thường các phiên bản của ký tự đầu tiên của chuỗi (nếu ký tự đầu tiên là Aloại bỏ tất cả As và as, nếu ký tự đầu tiên là (không gian) remove tất cả các khoảng trắng) và in đầu ra.

Ví dụ trường hợp:

  • 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

Đây là , mã ngắn nhất tính bằng byte thắng!

Ghi chú:

  • Đầu vào sẽ luôn có 2 hoặc nhiều ký tự hợp lệ.
  • Đầu ra sẽ không bao giờ là một chuỗi rỗng.

Chúng ta có cần xử lý trường hợp đầu ra là chuỗi rỗng không? Nếu đầu vào là chuỗi rỗng thì sao?
lirtosiast

@ThomasKwa bạn có thể giả sử đầu ra sẽ luôn có từ 2 ký tự trở lên
GamrCorps

@ThomasKwa và đầu ra sẽ không bao giờ trống
GamrCorps

Câu trả lời:


9

Bình thường, 7 byte

-zrBhz2

Dùng thử trực tuyến: Trình diễn hoặc Test Suite

Tốt đẹp. Toán tử bifurcate mới (chỉ 8 ngày tuổi) giúp ở đây để lưu một char. Tôi nghĩ rằng đây là mã đầu tiên, sử dụng tính năng này.

Giải trình

-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
Không, không biết về điều đó. +1
FryAmTheEggman

14

Brainfuck, 219 byte

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

(Yêu cầu băng cho phép con trỏ đi đến âm bản hoặc vòng lặp đến hết nếu nó cố gắng. Cũng yêu cầu ,trả về 0 tại EOF. Theo kinh nghiệm của tôi, hầu hết các thông dịch viên đều đáp ứng các yêu cầu này theo mặc định.)

Điều này thực sự hóa ra khá dễ dàng! Tôi sẽ không ngạc nhiên nếu nó có thể chơi được (tôi có một số ý tưởng về nơi có thể bị lãng phí byte nhưng tôi không chắc chắn nếu nó sẽ được tung ra). Tuy nhiên, làm cho nó hoạt động không thực sự là một thách thức.

Mã này coi mọi thứ có giá trị ASCII dưới 97 dưới dạng ký tự viết hoa. Nếu ký tự đầu tiên là khoảng trắng, nó sẽ cố gắng loại bỏ bất kỳ lần xuất hiện nào của "không gian chữ thường" (nghĩa chr(32+32)@) khỏi chuỗi. Điều này là ổn, bởi vì chỉ có chữ cái và không gian sẽ có mặt.

Với nhận xét:

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

]

Làm ơn đừng chơi cái này quá nhiều. c: Tôi đã làm việc rất chăm chỉ ...
Addison Crump

13

Perl, 13 byte

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

Đếm shebang là một, đầu vào được lấy từ stdin.


Sử dụng mẫu

$ 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

Tốt đẹp. Tôi đã suy nghĩ về cách Perl có thể sẽ làm tồi tệ vì nhu cầu viết substrnhưng tất nhiên bạn đã nghĩ ra một cách tốt hơn nhiều!
hobbs

Tại sao bạn tính hashbang là một byte?
Zereges

@Zereges dòng shebang là không cần thiết, nếu tập lệnh được gọi là perl -p script.pl. Các tùy chọn dòng lệnh thường được tính là một byte, ít nhất là trên trang web này.
primo

@primo Tôi hiểu rồi, cảm ơn.
Zereges

10

CJam, 8 byte

q(_32^+-

Hãy thử trực tuyến trong trình thông dịch CJam .

Làm thế nào nó hoạt động

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.

Ban đầu tôi đã tạo ra thử thách này để tìm hiểu về CJam và tôi chưa bao giờ biết về điều XOR!
GamrCorps

2
Cá nhân tôi thấy ngạc nhiên khi bất kỳ ngôn ngữ nào - ngoại trừ có lẽ sed - có thể đánh bại perl trong thử thách này.
primo

@primo - Bạn chưa nhận thấy rằng CJam và / hoặc Pyth đã giành được 99% trong số này? Perl đã làm khá tốt, vì đây là người duy nhất không được thiết kế đặc biệt như một ngôn ngữ chơi gôn.
Darrel Hoffman

Quá tải nhà điều hành của Pyth và CJam là vô lý. trừ (chuỗi, chuỗi) thực hiện loại bỏ mỗi ký tự không phải là thao tác cốt lõi trong bất kỳ ngôn ngữ nào khác mà tôi gặp phải.
Sparr

@Sparr APL có tích hợp tương tự. ( ~Mặc dù vậy, nó được gọi là .)
Dennis

7

Bình thường, 8 byte

-zr*2hz3

Dùng thử trực tuyến

Sử dụng phiên bản python của Pyth str.titleđể chuyển đổi một chuỗi chữ cái đầu tiên hai lần thành biểu mẫu "<Upper><Lower>". Sau đó, nó loại bỏ từng phần tử khỏi đầu vào trong chuỗi đó. Không gian hoạt động tốt bởi vì chúng không bị ảnh hưởng bởi str.title.



5

JavaScript (ES6), 38 36 byte

Điều này không phụ thuộc vào flagstham số dành riêng cho Mozilla.

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

CoffeeScript, 39 37 byte

Lần đầu tiên, nó ngắn hơn so với CoffeeScript!

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

3
Ít nhất trong các trình duyệt tôi đã thử, newtùy chọn RegExp(x[0],'gi')là ngắn hơn.
Neil

4

PHP, 41 byte

Có một đối số dòng lệnh . Các thẻ mở ngắn cần được bật cho PHP <5.4.

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

1
Bạn có thể rút ngắn nó bằng cách khai báo một biến chứa $argv[1]:<?=str_ireplace(($a=$argv[1])[0],'',$a);
Benoit Esnard

3

Perl, 27 byte

Đây là một chương trình hoàn chỉnh, mặc dù nó chỉ dựa trên 2 regex có thể được sao chép vào chương trình Retina để lưu byte trên I / O.

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

Chỉnh sửa: Có vẻ như điều này đã bị đánh bại với ai đó bằng cách sử dụng -ptùy chọn. Oh, và sử dụng $&thay vì $1.


1
Ngay cả khi toàn bộ shebang được tính (tức là chương trình "hoàn thành"), #!perl -pvẫn ngắn hơn hai byte $_=<>;print.
primo

@primo Tôi chưa bao giờ sử dụng bất kỳ tùy chọn nào trong các gôn của mình. Tôi chỉ googled những gì các -ptùy chọn làm. Thực sự không có bất kỳ chỉnh sửa nào mà tôi có thể thực hiện cho câu trả lời của mình mà không làm cho nó giống hệt với câu trả lời của bạn.
PhiNotPi

3

Chồn 0,9 , 23 33 byte

Không có cách nào điều này sẽ giành chiến thắng nhưng eh, nó rất vui!

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

Hãy thử nó ở đây.

Giải trình

" 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

(Điều này có thể thất bại trong một số trường hợp cạnh, như nếu ký tự đầu tiên là ký hiệu.)


3

TECO , 15 14 byte

Chỉnh sửa văn bản? Khi nghi ngờ, hãy sử dụng Trình soạn thảo văn bản và COrrecter!

Sau nhiều thử nghiệm và lỗi (chủ yếu là lỗi), tôi nghĩ rằng đây là chương trình chung chung ngắn nhất của TECO sẽ thực hiện công việc.

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

Hoặc, ở dạng người có thể đọc được

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.                                      !

$đại diện cho phím thoát và ^Eđại diện cho chuỗi CTRL+ E. Tùy thuộc vào hương vị của TECO bạn đang sử dụng, nó có thể nhận ra các thay thế ASCII này hoặc có thể không.

Theo hướng dẫn, một số phương ngữ của TECO chấp nhận phiên bản 13 byte này (sử dụng lệnh tìm và xóa thay vì các lệnh "tìm" và "xóa" riêng biệt):

0,1XA<FD^EQA$>

3

Pip, 8 byte

aR-Xa@0x

Lấy chuỗi dưới dạng đối số dòng lệnh (sẽ cần được trích dẫn nếu nó chứa khoảng trắng). Giải trình:

          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)

Giải pháp này có thêm phần thưởng khi làm việc trên các chuỗi chứa bất kỳ ký tự ASCII có thể in nào . ( XToán tử dấu gạch chéo ngược - thoát khỏi mọi thứ không phải là chữ và số.)


3

Con trăn, 66 char

a=raw_input()
print a.replace(a[0],'').replace(a[0].swapcase(),'')

5
@ThomasKwa làm thế nào về không.
TheDoctor

3

Julia, 34 byte

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

Điều này tạo ra một hàm không tên chấp nhận một chuỗi và trả về một chuỗi. Nó xây dựng một biểu thức chính quy không phân biệt chữ hoa chữ thường từ ký tự đầu tiên trong đầu vào và thay thế tất cả các lần xuất hiện của nó bằng một chuỗi rỗng.



2

R, 43 byte

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

Đây là một chương trình đầy đủ đọc một dòng từ STDIN và ghi kết quả đã sửa đổi vào STDOUT.

Ung dung:

# 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

Ruby, 25 byte

Hàm ẩn danh:

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

Sơ đồ đầy đủ, 29 byte:

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

2

Python, 61 byte (quá nhiều)

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

Tôi tưởng tượng có một cách tốt hơn để làm điều này, nhưng dường như tôi không thể tìm thấy nó. Bất kỳ ý tưởng về việc loại bỏ "".join(...)?


1
@ThomasKwa có lẽ bạn nên gửi đó là câu trả lời của riêng bạn; có vẻ như quá khác với tôi để tính là trình của tôi.
cole

@ThomasKwa Ngắn hơn để làm x[0]+x[0].swapcase().
xnor

1
@ThomasKwa Hoặc, ăn cắp từ giải pháp Pyth của FryAmTheEggman , (x[0]*2).title().
xnor

@xnor yeah, tôi thấy rằng khi tôi đọc chúng vài giờ trước.
lirtosiast

lambda x:x.replace(x[0].upper(),'').replace(x[0].lower(),'')- 60 byte
Mego

2

Ouroboros , 61 byte

Này, nó ngắn hơn C ++! Hà.

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

Trong Ouroboros, mỗi dòng của chương trình đại diện cho một con rắn có đuôi trong miệng. Kiểm soát luồng được thực hiện bằng cách ăn hoặc hồi quy các phần đuôi, với một ngăn xếp chung để đồng bộ hóa giữa các con rắn.

Rắn 1

i.đọc một ký tự từ đầu vào và sao chép nó. .91<\64>*32*đẩy 32nếu nhân vật là một chữ cái viết hoa, 0nếu không. +ing để nhân vật chuyển đổi chữ in hoa thành chữ thường trong khi vẫn giữ nguyên chữ cái viết thường và dấu cách. Tất cả điều này đã diễn ra trên ngăn xếp của rắn 1, vì vậy bây giờ chúng tôi đẩy giá trị lên ngăn xếp chung (m ) cho rắn 2 để xử lý. Cuối cùng, 1(ăn nhân vật cuối cùng của đuôi rắn 1. Vì đó là nơi con trỏ chỉ dẫn, con rắn chết.

Rắn 2

)không có hiệu lực lần đầu tiên thông qua. L!34*đẩy 34nếu ngăn xếp chia sẻ là trống rỗng, 0nếu không. Chúng tôi sau đó .dup và (ăn nhiều nhân vật.

  • Nếu ngăn xếp được chia sẻ trống, điều này sẽ kết thúc con rắn ngay sau khi (chúng ta vừa thực hiện. Do đó, kiểm soát các vòng lặp trở lại từ đầu dòng, nơi tập hợp )lại các nhân vật chúng ta vừa ăn (trước đó đã đẩy thêm một bản sao của34 ) và lặp lại bài kiểm tra độ dài ngăn xếp.
  • Nếu ngăn xếp được chia sẻ không trống, không có ký tự nào được ăn, ';' giảm thêm 0, và thực hiện tiếp tục:

Sichuyển sang ngăn xếp được chia sẻ và nhập ký tự khác. .1+!24*đẩy 24nếu ký tự đó là -1 / EOF, 0nếu không. Trên EOF, (nuốt 24 ký tự - bao gồm cả IP - và con rắn chết. Nếu không, thực thi tiếp tục.

Yđưa một bản sao của đỉnh ngăn xếp được chia sẻ (ký tự mà chúng ta vừa đọc) vào ngăn xếp của chính con rắn 2 để sử dụng trong tương lai. Sau đó .@@.@=@.@32-=\@+2*tính toán xem ký tự mới có bằng ký tự đầu tiên hay ký tự đầu tiên trừ 32, đẩy 2nếu có và 0nếu không. Chúng tôi .nhân đôi và (ăn nhiều nhân vật đó:

  • Nếu các nhân vật khớp nhau, chúng ta quay trở lại đầu của con rắn, nơi tập hợp (lại 2 nhân vật mà chúng ta vừa ăn và thực hiện tiến hành với nhân vật tiếp theo.
  • Nếu không, chúng tôi sẽ ynhân vật trở lại từ ngăn xếp của rắn 2, obỏ qua nó và sau đó lặp lại.

Xem nó trong hành động


2

C, 60 byte

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

Chỉnh sửa: Đã sửa lỗi gây ra một byte rỗng được in lúc đầu


Nó thậm chí còn biên dịch?
Abr001am

1
Vâng. Nó biên dịch trên máy của tôi (có cảnh báo) và hoạt động. Bạn cũng có thể kiểm tra nó trên trang này: golf.shinh.org/check.rb
xsot

đúng vậy +1
Abr001 sáng

2

Con trăn 2, 43

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

Điều này phần nào dựa trên câu trả lời Pyth của tôi, nhưng nó cũng liên quan đến một số ý kiến ​​từ ThomasKwa và xnor từ đây . Chủ yếu là đăng bởi vì tôi muốn câu trả lời này tồn tại.


2

Vim, 30 tổ hợp phím

Xin lỗi để khai quật, nhưng tôi không thấy bất kỳ câu trả lời Vim nào D:

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

Giải trình:

  1. If<Right>xh@x.<Esc>
    Viết một macro (đệ quy) xung quanh ký tự đầu tiên
    Di chuyển trái ( h) là cần thiết để ở bên trái của ký tự chưa đọc tiếp theo
    Thêm bất kỳ ký tự ( .) nào ở cuối là cần thiết trong trường hợp thứ hai phải được loại bỏ
  2. "xy0 Sao chép macro trong thanh ghi x
  3. 7| Di chuyển đến char thứ 7
  4. @x Chạy macro từ x
  5. 2|~ Chuyển trường hợp của char đầu tiên (thực tế ở vị trí thứ 2)
  6. 0"xd7| Cắt macro trong thanh ghi x
  7. @x Chạy macro từ x
  8. 0x Hủy bỏ giữ chỗ .

1
:DTôi luôn upvote vim!
DJMcMayhem

1

Haskell, 52 byte

import Data.Char
t=toUpper
r(h:s)=filter((t h/=).t)s

2
Danh sách hiểu được tiết kiệm 1 byte : r(h:s)=[c|c<-s,t c/=t h].
nimi

1

TI-BASIC, 164 byte

Đối với máy tính vẽ đồ thị sê-ri 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 rõ ràng là công cụ sai cho công việc.

  • Nó không có lệnh để xóa các ký tự, vì vậy chúng ta cần lặp qua chuỗi và nối các ký tự nếu chúng không khớp với những gì cần xóa.
  • Nó không hỗ trợ các chuỗi trống, vì vậy chúng ta cần bắt đầu chuỗi với hai chữ cái sẽ bị xóa, xây dựng đầu ra ở cuối và cắt hai ký tự đầu tiên.
  • Nó không có lệnh thay đổi trường hợp, vì vậy chúng ta cần mã hóa toàn bộ bảng chữ cái ...
    • hai lần ...
    • Tôi có đề cập đến các chữ cái viết thường mất hai byte trong mã hóa TI-BASIC không?

Tôi không chắc chắn 100%, nhưng tôi đã dành hơn sáu giờ cho việc này và dường như đó là giải pháp ngắn nhất có thể.

Để kiểm tra điều này với các đầu vào không viết hoa (hoặc để nhập nó vào máy tính của bạn), tạo một chương trình khác với nội dung AsmPrgmFDCB24DEC9và chạy nó bằng cách sử dụng Asm([whatever you named it]chế độ gõ chữ thường.



1

Lisp thường gặp, 77

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

Nguyền rủa những tên hàm dài này (và dấu ngoặc đơn (nhưng dù sao tôi vẫn yêu thích chúng (: 3))).


1

C, 65 61 byte

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

Biên dịch với các cảnh báo. Đọc chuỗi từ argv[1]. Ví dụ trực tuyến


1
Bạn có thể rút ngắn main(int c,char**v)tới main(c,v)char**v;, và (**v-c)%32để **v-c&31.
Dennis

1

C ++, 100 99 98 byte

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

Chỉ cần thêm một byte để có được dưới 100. getchar()trả về -1khi nó đọc hết luồng, vì vậy đó là lý do tại sao ~nó đang trong forchu kỳ. ( ~-1 == 0)

Bị đánh cắp

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

Bạn không thể sử dụng &&putchar(c)thay vì ?putchar(c):0?
Neil

@Neil Cảm ơn bạn, bây giờ tôi dưới 100 byte!
Zereges

@ThomasKwa Tất nhiên tôi có thể, cảm ơn.
Zereges

1
Bạn có thể làm f-c&31như trong câu trả lời C?
lirtosiast

1

AppleScript, 209 201 byte

Điều an ủi duy nhất của tôi là tôi đã đánh bại Brainfuck.

đặt lại thành (văn bản hiển thị "" trả lời mặc định "")
đặt n thành số của một ký tự
đặt o thành ""
lặp lại n
nếu không phải là ký tự của n = a ký tự 1 thì đặt o thành ký tự của n & o
đặt n thành n-1
kết thúc
o

Làm thế nào điều này hoạt động là tôi đưa đầu vào thông qua a, lấy độ dài avà đánh dấu nó là n, và đặt một biến đầu ra o. Đối với mỗi ký tự mà tôi thấy không chứa ký tự đầu tiên của ( a's character 1), tôi ghép nó thành o. Các dòng in cuối cùng o.

Lưu ý: Điều này tự động hỗ trợ tất cả Unicode. c:


3
My only consolation is that I beat Brainfuck.có vẻ như tôi tốt hơn nên chơi golf;)
ngầm cá nhân

1

Võng mạc , 16 byte

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

Lưu mã với một linefeed trailing và chạy nó với -scờ.

Cách thức hoạt động: linefeed trailing làm cho đây là một giai đoạn thay thế, sao cho bất kỳ kết quả khớp nào của regex đã cho đều được thay thế bằng một chuỗi rỗng. Việc ibật chế độ không phân biệt chữ hoa chữ thường cũng làm cho phản ứng ngược không phân biệt chữ hoa chữ thường. Cuối cùng, regex chỉ đơn giản khớp và bắt một ký tự đơn và sau đó kiểm tra xem ký tự đầu tiên trong chuỗi có giống nhau hay không (tùy trường hợp) bằng cách sử dụng phản hồi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.