Ký từ 2!


17

Ký từ 2!

Cách đây không lâu, tôi đã đăng một thử thách có tên Ký từ đó! . Trong thử thách, bạn phải tìm chữ ký của từ, đó là các chữ cái được xếp theo thứ tự (ví dụ: Chữ ký của thishist). Bây giờ, thử thách đó đã làm khá tốt, nhưng có một vấn đề chính: đó là CÁCH quá dễ dàng (xem câu trả lời của GolfScript ). Vì vậy, tôi đã đăng một thử thách tương tự, nhưng với nhiều quy tắc hơn, hầu hết trong số đó đã được đề xuất bởi người dùng PPCG trong các nhận xét về câu đố trước đó. Vì vậy, ở đây chúng tôi đi!

Quy tắc

  1. Chương trình của bạn phải lấy một đầu vào, sau đó xuất chữ ký thành STDOUT hoặc tương đương với bất kỳ ngôn ngữ nào bạn sử dụng.
  2. Bạn không được phép sử dụng các chức năng sắp xếp tích hợp, vì vậy những thứ như $trong GolfScript không được phép.
  3. Multicase phải được hỗ trợ - chương trình của bạn phải nhóm các chữ cái của cả chữ hoa và chữ thường với nhau. Vì vậy, chữ ký của HelloeHllo, không phải Hellokhi bạn được đưa ra bởi câu trả lời GolfScript trên phiên bản đầu tiên.
  4. Phải có một trình thông dịch / trình biên dịch miễn phí cho chương trình của bạn, mà bạn nên liên kết đến.

Chấm điểm

Điểm của bạn là số byte của bạn. Số byte thấp nhất sẽ thắng.

Bảng xếp hạng

Dưới đây là Stack Snippet để tạo cả bảng xếp hạng thông thường và tổng quan về người chiến thắng theo ngôn ngữ.

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

# Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:

# Ruby, <s>104</s> <s>101</s> 96 bytes


2
Phải viết thường và viết hoa? Ví dụ, ThHihschúng ta có thể xuất hHhisthoặc chúng ta phải xuất hhHisthay Hhhistkhông?
Gây tử vong vào

2
@Kslkgh Tôi không muốn cài đặt trình thông dịch GolfScript để hiểu câu hỏi. Các yêu cầu phải được xác định rõ ràng trong chính câu hỏi.
frageum

1
@feersum Bạn không cần. Có một liên kết trong câu trả lời cho một thông dịch viên trực tuyến. Nhưng tôi sẽ làm cho nó rõ ràng hơn.

8
Xử lý chính xác chữ thường / chữ hoa trong Unicode là đáng sợ, vì vậy câu hỏi này có tự nguyện giới hạn ở các chữ cái ASCII: [a-zA-Z] không?
Matthieu M.

3
Bạn đã quên đóng dấu ngoặc đơn sau khi "xem câu trả lời GolfScript này". xkcd.com/859
nyuszika7h

Câu trả lời:


11

Bình thường, 10 byte

sm@+drd1zG

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

Giải trình:

             implicit: z = input string
 m       G   map each letter (variable d) of the alphabet to:
   +drd1        d + upper(d)
  @     z       filter z for these two letters
s            sum, join to a string

5

Haskell, 51

f s=[x|(a,b)<-zip['a'..'z']['A'..],x<-s,x==a||x==b]

Việc ziptạo một danh sách các cặp nhân vật [('a','A'), ...('z','Z')]. Do cắt ngắn, điểm cuối thứ hai không cần phải được chỉ định. Đối với mỗi cặp trong danh sách, chúng tôi lấy các chữ cái trong chuỗi đầu vào slà một trong hai ký tự trong cặp.


5

Python 3, 72 70 byte

s=input()
print("".join(d*(ord(d)&31==c)for c in range(27)for d in s))

Giả sử đầu vào chỉ bao gồm [a-zA-Z].

(-2 byte nhờ @xnor)


Tôi nghĩ bạn có thể làm "".join(c*b ...)cho "".join(c ... if b) cùng một cách sum(n ... if b)có thể được sum(n*b ...).
xnor

Thu gọn hai vòng lặp thành một vòng lặp với một tâm điểm và nén kiểm tra đẳng thức: c=1 for d in(input()+'~')*26:print(d[ord(d)&32^c:],end='');c+=d>'z'(67)
xnor

@xnor Tôi đã thêm mẹo đầu tiên (cảm ơn!) nhưng tôi nghĩ bạn nên đăng câu thứ hai dưới dạng câu trả lời riêng :)
Sp3000

4

GOTO ++, 531 byte

niveaugourou 0
s=ENTRETONTEXTE()
§2 a=LeCaracNumero()&s *(1)
n=*(1)
costaud i=*(2)/&i infeg NombreDeLettres(&s)/i=+*(1)
b=LeCaracNumero()&s &i
c=&b
d=&a
GOTONULPOURLESNULS %4 }&b sup *(96){
c=-*(32)
§4 GOTONULPOURLESNULS %5 }&a sup *(96){
d=-*(32)
§5 GOTONULPOURLESNULS %1 }&c inf &d{
a=&b
n=&i
§1 faiblard
GOTOPRINTDUTEXTE()&a
s=Marijuana()}BOITEAPINGOUINS()}PrendsUnMorceau()&s *(0) &n{ }PrendsUnMorceau()&s }&n+*(1){ *(0){{ «»
GOTONONNULPOURLESNULS %3 }NombreDeLettres(&s) eg *(1){
GOTOPASMALIN %2
§3 GOTOPRINTDUTEXTE()&s

Trang dự án GOTO ++

Đây là một phiên bản mã dễ đọc và dễ nhận biết hơn (Lưu ý GOTObắt đầu nhận xét trong GOTO ++):

niveaugourou 0                                          GOTO Allow every keyword to be used
s=ENTRETONTEXTE()                                       GOTO Read from STDIN
§2 a=LeCaracNumero()&s *(1)                             GOTO Get first char in s
n=*(1)                                                  
costaud i=*(2)/&i infeg NombreDeLettres(&s)/i=+*(1)     GOTO Loop on every char of s
b=LeCaracNumero()&s &i                                  GOTO b = i-th char
c=&b                                            
d=&a
GOTONULPOURLESNULS %4 }&b sup *(96){                    GOTO If b is uppercase, goto §4 
c=-*(32)                                                GOTO Get the uppercase ASCII value of b
§4 GOTONULPOURLESNULS %5 }&a sup *(96){                 GOTO same as above but with a
d=-*(32)                                                
§5 GOTONULPOURLESNULS %1 }&c inf &d{                    GOTO If b is after a in alphabetical order, goto §1 (next loop iteration)
a=&b                                                    GOTO Else replace a by b
n=&i                                                                
§1 faiblard                                             GOTO End loop
GOTOPRINTDUTEXTE()&a                                    GOTO Print the value of a
t=PrendsUnMorceau()&s *(0) &n                           GOTO Get the part of s before a
u=PrendsUnMorceau()&s }&n+*(1){ *(0)                    GOTO Get the part of s after a
e=BOITEAPINGOUINS()&t &u                                GOTO Create an array of penguins containing the two substrings
s=Marijuana()&e «»                                      GOTO Concatenate the penguins in the array
GOTONONNULPOURLESNULS %3 }NombreDeLettres(&s) eg *(1){  GOTO If s is one char long, goto §3
GOTOPASMALIN %2                                         GOTO Else goto §2
§3 GOTOPRINTDUTEXTE()&s                                 GOTO Print the last char

2
Dấu ấn của một ngôn ngữ lập trình tuyệt vời: tất cả các lệnh đều bằng tiếng Pháp và trang web chính thức có nội dung "Gửi logo của bạn và nhìn thật ngu ngốc."
Alex A.

@AlexA. Đánh dấu của một ngôn ngữ lập trình tuyệt vời: function(arg)function() argcả hai đều hợp lệ. Ngoài ra, dấu ngoặc ưu tiên là } {và không nhàm chán( )
Fatalize 22/08/2015

4

Bình thường, 15 14 byte

s*V/LzJ.irG1GJ

Cảm ơn isaacg đã loại bỏ 1 byte.

Tôi chưa biết nhiều về Pyth, vì vậy điều này có thể không được đánh golf tốt.

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


Một môn đánh gôn dễ dàng: sgiống như jktrong danh sách các chuỗi.
isaacg

4

JavaScript (ES6), 71 74

Giới hạn ở A-Za-z (xem bình luận của @Matthieu M)

Chỉnh sửa Quá được sử dụng để soạn một biểu thức bằng dấu phẩy, để tránh 'trở lại'. Ở đây cần có một đầu ra, vì vậy tôi có thể sử dụng một fordấu phẩy đơn giản và quên đi dấu phẩy.

Sử dụng khả năng hiểu mảng, số byte là 73, nhưng EcmaScript 6 không còn hợp lệ nữa

Lưu ý thông thường: kiểm tra chạy đoạn mã trên bất kỳ trình duyệt tuân thủ EcmaScript 6 nào (đáng chú ý không phải Chrome không phải MSIE. Tôi đã thử nghiệm trên Firefox, Safari 9 có thể đi)

f=w=>{v=[];for(c of w)v[n=parseInt(c,36)]=(v[n]||'')+c;alert(v.join``)}
<input id=I value='Hellzapoppin'><button onclick=f(I.value)>-></button>


4

Javascript, 112 194 byte

r=[];t=[];a=s.split('').map(function(x){t[i=parseInt(x,36)]?t[i].push(x):t[i]=[x];return i;});while(l=a.length)r[l-1]=t[a.splice(a.indexOf(Math.max.apply({},a)),1)].pop();console.log(r.join(''))

Điều này khác xa với "chơi gôn" nhưng hiện tại tôi hơi bận, chỉ cần chỉnh sửa để loại bỏ.


1
@frikinside Mặc dù có thể không giúp giải pháp này vì việc sắp xếp không được phép, các hàm mũi tên Javascript ES6 có thể giúp rút ngắn điều này. (Không phải tất cả các trình duyệt đều hỗ trợ ES6, hãy thử Firefox). Có lẽ nó sẽ giúp giải pháp trong tương lai của bạn! :) Một ví dụ về những gì nó có thể trông giống như:console.log(input.split('').sort((a,b)=>a.toLowerCase().localeCompare(b.toLowerCase())).join(''))
jrich

@Und xác định chức năng Trên thực tế tôi chọn sử dụng javascript đơn giản cho mục đích "thử thách" nhưng rất nhiều cho gợi ý hay!
frikinside

@ edc65 thực sự tôi đã nhận thức được điều đó trong một bình luận trước đó (như bạn đã nói) và tôi đã không quên điều đó, tôi đã không có thời gian cho đến bây giờ.
frikinside

4

Con trăn 3, 64

Một cải tiến nhỏ về câu trả lời của Sp3000 , trong đó sử dụng ý tưởng lặp lại các chỉ số ký tự và đối với từng chỉ số, lặp qua đầu vào để lấy các ký tự khớp với nhau.

c=1
for d in(input__+'~')*26:print(end=d[ord(d)&31^c:]);c+=d>'z'

Điều này sử dụng một vòng lặp duy nhất, lặp qua đầu vào 26 lần. Dấu phân cách ~được sử dụng để biết khi nào đi đến chỉ mục ký tự tiếp theo c. Để xem ký tự dkhớp với giá trị ctheo trường hợp, năm bit cuối cùng của giá trị bit dlà xor-ed với c, với 0 biểu thị khớp.

Sau đó, ký tự dđược in chính xác khi có kết quả 0, với một chuỗi trống khác.


3

Python 2.7, 114 106 byte

l=[0]*123
for e in raw_input():l[ord(e)]+=1
print''.join(chr(j)*l[j]for i in range(26)for j in(i+65,i+97))

Ghi nhật ký sự hiện diện của char trong một mảng dài 123 (bao gồm cả phạm vi AZ và az) và sau đó lặp qua nó để có được các mục nhập khác không.
Không hiệu quả, nhưng hiệu quả hơn so với vũ phu buộc nó (nhưng dài hơn :().

Kiểm tra nó-

<< HelloWorldhi
>> deHhillloorW

Khi tôi chạy nó với HelloWorldhi, tôi nhận được['d', 'e', 'H', 'h', 'i', 'lll', 'oo', 'r', 'W']
Blue

@muddyfish oops tôi xấu. Tôi đã dán mã sai trong khi thử một vài thứ. Cảm ơn vì điều đó :)
Kamehameha

Bạn không cần một if l[j]trong hai.
Màu xanh

@muddyfish Đẹp, chúng trở thành chuỗi rỗng (và bị xóa khi joined). -8 byte. Cảm ơn :)
Kamehameha

1
@SirParselot Vâng, nhưng điều đó có vẻ như sửa đổi đầu vào như được đưa ra trong câu hỏi, vì vậy đã không làm điều đó
Kamehameha

3

PHP, 275 270 byte

<?php
for($i=65;$i<123;$i++){$v[$i]=chr($i);}foreach(str_split($argv[1])as$c){$a=array_search($c,$v);if($a<97){$p[]=($a+32);$z[]=$a;}else{$p[]=$a;}}foreach($p as$chr){$m=min($p);if($z[0]+32==$m){echo chr($m-32);unset($z[0]);}else{echo chr($m);}unset($p[array_search($m,$p)]);}


Giải thích:
Mã tạo ra một mảng với mỗi chữ cái trong bảng chữ cái, có Giá trị ASCII là Khóa mảng. Sau đó, mã tạo ra một mảng mới chứa Giá trị ASCII của Đầu vào. Sau đó, Giá trị thấp nhất được in ra và được xóa.

Cách sử dụng:
Gọi tập lệnh với một đối số: php -d error_reporting=0 script.php Hello

Phiên bản Ungolfed:

<?php
$input = $argv[1];
$valueArray = [];
for($i=65;$i<123;$i++) {
    $valueArray[$i] = chr($i);
}
$new = str_split($input);
foreach($new as $char) {
    if(array_search($char, $valueArray)<97) {
        $newArray[] = (array_search($char, $valueArray)+32);
        $checkArray[] = array_search($char, $valueArray);
    } else {
        $newArray[] = array_search($char, $valueArray);
    }
}
foreach($newArray as $chr) {
    if($checkArray[0]+32 == min($newArray)) {
        $string .= chr(min($newArray)-32);
        unset($checkArray[0]);
    } else {
        $string .= chr(min($newArray));
    }
    $key = array_search(min($newArray), $newArray);
    unset($newArray[$key]);
}

echo $string;


Bất kỳ lời khuyên nào đều được đánh giá cao.


Các chữ cái viết hoa không hoạt động ... cần phải sửa lỗi này.
jrenk

Đã sửa lỗi mã cũng hoạt động khi Đầu vào có chữ Uppercase.
jrenk

3

Haskell, 83 53 byte

import Data.Char
f y=[c|x<-[' '..],c<-y,toLower c==x]

Cách sử dụng: f "HelloWorldhi"-> "deHhillloorW".

Cách thức hoạt động: hãy ylà chuỗi đầu vào

[ |x<-[' '..]                  ]  -- for every x from Space to the last Unicode character
             ,c<-y                -- loop through all character c from the input string
 c                ,toLower c==x   -- and keep those where the lowercase version equals x

Chỉnh sửa: 30 byte được lưu, hãy tưởng tượng rằng! Cảm ơn @Mauris.


2
Tại sao không chỉ import Data.Char;f y=[c|x<-[' '..],c<-y,toLower c==x](53 byte)? (Điều này sẽ mất một thời gian để chấm dứt, bởi vì length [' '..] == 1114080- nhưng nó là hữu hạn.)
Lynn

1
@Mauris: Wow! Btw: 8,5 giây trên máy tính xách tay 4 tuổi không quá dài.
nimi

3

Python 3, 61 byte

Một câu trả lời mới cho một kỹ thuật khác!

z=['']*42
for c in input():z[ord(c)&31]+=c
print(*z,sep='')

Lưu ý rằng ord('a')&31==ord('A')&31và rằng ord('z')&31==ord('Z')&31, chúng tôi chỉ đơn giản là có thể tạo ra một mảng các chuỗi rỗng và cho mỗi nhân vật thêm nó vào chỉ số mảng có giá trị ASCII của nó &31. Khi bạn in nó, nó sẽ được sắp xếp.

Giới hạn đầu vào a-zA-Z.


2

Python 3, 97 92 byte

from itertools import*;print(*min(permutations(input()),key=lambda z:str(z).lower()),sep='')

Cách tốt nhất để sắp xếp rõ ràng là tạo ra tất cả các hoán vị, và sau đó chọn mức tối thiểu, điều sắp xảy ra để được sắp xếp :)

Các chuỗi được hạ thấp trước khi so sánh tuân thủ các quy tắc 'nhận biết trường hợp'.

Cảnh báo: có thể rất chậm với các chuỗi lớn.

Một thông dịch viên được đặt ở đây .


2

Python 3, 118 byte

i=input();i,x=map(list,(i,i.lower()))
while x:q=min(x);x.remove(q);q=[q.upper(),q][q in i];i.remove(q);print(q,end="")

Có thể chơi golf ngắn hơn nhiều, tôi biết


Bạn có thể thay thế if q not in i:bằng if~-(q in i):.
PurkkaKoodari

Tôi làm bởi vì tôi đang gọi .remove()chức năng trên nó.
Màu xanh

2

Powershell, 164 byte

Tôi chắc chắn có một cách sạch hơn để làm điều này, nhưng tôi không thể nghĩ ra bất cứ điều gì khác. Chỉ cần lấy đầu vào là một mảng ký tự, thực hiện sắp xếp chèn và phun ra đầu ra. Mất một cách khủng khiếp, ngay cả với các ngôn ngữ không chơi gôn khác.

Mã số:

$a=[char[]]($args[0]);For($u=1;$u-lt$a.Count;$u++){$n=$a[$u];$l=$u;while(($l-gt0)-and((""+$a[$l-1]).CompareTo(""+$n)-gt0)){$a[$l]=$a[$l-1];$l--}$a[$l]=$n};$a-join''

Sử dụng:

PS C:\scripts> .\sign-word-2.ps1 tTHhis
hHistT

Mở rộng & giải thích:

$a=[char[]]($args[0])               # Takes command-line argument, recasts as char array
For($u=1;$u-lt$a.Count;$u++){       # Performs a quick-n-dirty insertion sort
  $n=$a[$u]
  $l=$u
  while(($l-gt0)-and((""+$a[$l-1]).CompareTo(""+$n)-gt0)){
  # Ugly, ugly code here. String.CompareTo(String) is case-insensitive, but
  # because we cast as a char[], Char.CompareTo(Char) is case-sensitive ...
  # So, need to do an on-the-fly re-casting as a string with ""+
    $a[$l]=$a[$l-1]
    $l--
  }
  $a[$l]=$n
}
$a-join''             # Without the -join'', it would print out the chars with a space between

2

Julia, 61 byte

f=s->s>""?(k=indmax([s...]%32);f(s[k+1:end]s[1:k-1])s[k:k]):s

Julia sẽ hiển thị nó dưới dạng đầu ra chuỗi nếu bạn gọi nó trong REPL. Nếu nó thể in ra STDOUT, sau đó nó cần 78 byte:

x->(f=s->s>""?(k=indmax([s...]%32);f(s[k+1:end]s[1:k-1])s[k:k]):s;print(f(x)))

Một thông dịch viên cho Julia có thể được tìm thấy ở đây . Một số khác, mà tôi đã đặt một số mã vào, là ở đây . Lưu ý rằng, với cái thứ hai, bạn sẽ cần làm cho thiết bị đầu cuối (ở dưới cùng) hiển thị bằng cách kéo ranh giới lên. Nhấp vào "thực thi" sẽ làm cho nó chạy trong thiết bị đầu cuối ở dòng lệnh thông thường (và do đó sẽ không hiển thị đầu ra nếu được gọi mà không in println). Ngoài ra, bạn có thể chỉ cần nhập juliavào thiết bị đầu cuối, sau đó xử lý mọi thứ bên trong REPL sẽ xuất hiện.

Và để thêm một chút thú vị, đây là một số triển khai khác

Sắp xếp Gnome (83 byte):

s->(for m=2:endof(s),n=m:-1:2 s[n]%32<s[n-1]%32&&(s=s[[1:n-2,n,n-1,n+1:end]])end;s)

Thuật toán sắp xếp của riêng tôi (84 byte):

s->(k=1;while length(k)>0 k=find(diff([s...]%32).<0);s=s[setdiff(1:end,k)]s[k]end;s)

2

Scala, 82 byte

print((""/:args(0)){case(s,c)=>val(a,b)=s.span(h=>{if(h<97)32 else 0}+h<c);a+c+b})

từ dòng lệnh:

$ scala -e 'print((""/:args(0)){case(s,c)=>val(a,b)=s.span(h=>{if(h<97)32 else 0}+h<c);a+c+b})' Hello
eHllo

có lẽ có thể được đánh gôn xa hơn một chút ... chỉ cần thực hiện sắp xếp chèn bằng cách sử dụng nếp gấp.


2

mã máy x86, 51 42 byte

00000000  b3 82 89 da 8b 07 80 fc  0d 74 12 b9 20 20 09 c1  |.........t..  ..|
00000010  38 e9 7e 06 86 c4 89 07  31 d2 43 eb e7 85 d2 74  |8.~.....1.C....t|
00000020  df c6 47 01 24 b4 09 cd  21 c3                    |..G.$...!.|
0000002a

Sắp xếp bong bóng, với một số thủ thuật sử dụng lại đăng ký để cạo byte ở đây và đó; các tập tin .COM chạy trong DOSBox, nhận đầu vào từ dòng lệnh và in sản lượng đầu ra tiêu chuẩn.

phiên mẫu

Nhận xét lắp ráp:

    org 100h

section .text

start:
    ; bubble sort - external loop
ext:
    ; start from the first character (assume bh=0, true on every DOS)
    mov bl,82h
    ; "not-swapped" flag - 82h => no swaps in current iteration;
    ; 0 => a swap happened (the 82h will come in handy later)
    mov dx,bx
    ; bubble sort - internal loop
int:
    ; read 2 characters at time in the full ax
    mov ax,word[bx]   ; al     ah
                      ; ^[bx]  ^[bx+1]
    ; check if we are at the end (the command line is CR terminated)
    cmp ah,0dh
    je skip
    ; make uppercase in cx
    mov cx,2020h
    or cx,ax
    ; compare
    cmp cl,ch
    jle next
    ; wrong order - swap and rewrite
    xchg al,ah
    mov word[bx],ax
    ; mark that we did a swap
    xor dx,dx
next:
    ; next character
    inc bx
    jmp int
skip:
    ; loop as far as we swapped something
    test dx,dx
    jz ext
end:
    ; $-terminate the string
    mov byte[bx+1],'$'
    ; print
    ; dx already contains the location of the string, since that's the
    ; flag value we used for "no swaps"
    mov ah,9
    int 21h
    ret


1

Perl, 88 byte

@_=/./g;a:{for(0..@_-2){@_[$_,$_+1]=@_[$_+1,$_],redo a if uc$_[$_]gt uc$_[$_+1]}}print@_

Chỉ là một sắp xếp bong bóng đơn giản. Gọi với tùy chọn -n để truyền văn bản.

ví dụ:

echo "tThHiIsS" | perl -n sort2.pl

Đầu ra:

hHiIsStT

1

PHP, 106 byte

Mật mã:

$c=count_chars($argv[1]);$r=str_repeat;for($i=64;++$i<91;)echo$r(chr($i),$c[$i]),$r(chr($i+32),$c[$i+32]);

Không có gì đặc biệt trong mã; count_chars()tạo ra một mảng được lập chỉ mục bởi các mã ASCII có chứa số lần xuất hiện cho mỗi ký tự ASCII. Phần còn lại là một sự lặp lại buồn tẻ trên mảng này.

Ví dụ về thực hiện:

$ php -d error_reporting=0 sign.php qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKasdfJHGFDSAZXCVBNM
AaaBbCcDddEeFffGgHhIiJjKkLlMmNnOoPpQqRrSssTtUuVvWwXxYyZz

Một byte bổ sung có thể được lưu bằng PHP 7: thay thế $c[$i]bằng ($c=count_chars($argv[1]))[$i]và loại bỏ việc gán $ctừ đầu chương trình.


1

Haskell, 74 byte

l=(`mod`32).fromEnum
f=foldr(#)""
e#[]=[e]
e#a@(h:t)|l e<l h=e:a|1<2=h:e#t

Hoàn toàn khác với câu trả lời khác của tôi . Lần này là một kiểu chèn đơn giản.


1

Pip, 18 14 byte

Kho GitHub cho Pip

Có vẻ như không có cạnh tranh với Pyth, nhưng điều này là khá đáng kính trọng.

FcAZ OcQUC_FIa

Chỉ hoạt động trên chuỗi chứa a-zA-Z. Đối với mỗi chữ cái của bảng chữ cái, sử dụng thao tác lọc để lấy các chữ cái từ chuỗi đầu vào bằng chữ cái đó không phân biệt chữ hoa chữ thường:

                    a <- cmdline arg, AZ <- string containing uppercase alphabet (implicit)
FcAZ                For each character c in AZ:
           FIa      Filter characters of a on the following lambda function:
      UC_           Uppercase of character...
         Qc         ... is equal to c
     O              Output the resulting list, joined on empty string by default

Hai lưu ý:

  • Không gian là cần thiết; mặt khác, chuỗi AZOsẽ quét A ZOthay vì AZ O;
  • Chương trình không xuất ra một dòng mới. Để thêm một mã, đặt một mã xở cuối mã (từ đó in một chuỗi trống sau khi hoàn thành vòng lặp).

Chạy mẫu (sử dụng xbiến thể):

dlosc@dlosc:~/pip$ pip -e "FcAZ OcQUC_FIax" "HelLo wOrld"
deHlLloOrw

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.