Flippign Lettesr Aroudn


33

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

งานของคุณถ้าคุณต้องการที่จะยอมรับมันคือการเขียนโปรแกรมที่พลิกตัวอักษรสองตัวสุดท้ายของแต่ละคำในสตริงที่กำหนด (ดังนั้นคำThanskจะเปลี่ยนเป็นThanks) คำเป็นลำดับของสองคนหรือมากกว่าตัวอักษรในตัวอักษรภาษาอังกฤษที่คั่นด้วยเดี่ยวพื้นที่

  • สตริง / รายการตัวละครที่คุณได้รับจากการป้อนข้อมูลนั้นรับประกันว่าจะมีตัวอักษรและช่องว่างเท่านั้น (ASCII [97 - 122], [65 - 90] และ 32)

  • คุณสามารถรับอินพุตและให้เอาต์พุตผ่านวิธีมาตรฐานใด ๆในภาษาการเขียนโปรแกรมใด ๆในขณะที่รับทราบว่าช่องโหว่เหล่านี้เป็นสิ่งต้องห้ามตามค่าเริ่มต้น

  • เอาต์พุตอาจมีหนึ่งช่องว่างต่อท้ายและ / หรือขึ้นบรรทัดใหม่หนึ่งบรรทัด

  • ข้อมูลที่ป้อนจะมีคำศัพท์อยู่เสมอ (และช่องว่างที่เกี่ยวข้อง) และจะประกอบด้วยคำอย่างน้อยหนึ่งคำ

นี่คือรหัสกอล์ฟดังนั้นการส่งสั้นที่สุด (คะแนนเป็นไบต์) ในแต่ละภาษาชนะ!

กรณีทดสอบ

โปรดทราบว่าสตริงนั้นล้อมรอบด้วยเครื่องหมายคำพูดเพื่อให้สามารถอ่านได้

อินพุต -> เอาท์พุท

"Thansk" -> "ขอบคุณ"
"Youer welcoem" -> "ยินดีต้อนรับคุณ"
"นี่คือแอปเปิ้ล" -> "Thsi si na appel"
"Flippign Lettesr Aroudn" -> "พลิกตัวอักษรไปรอบ ๆ "
"สิ่งที่เราต้องทำคือไม่เปลี่ยน swappde lettesR" -> "challEnge ของเราจะถูกเปลี่ยนเป็น letteRs ที่สลับกัน"

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

Thansk
คุณยินดีต้อนรับ
นี่คือแอปเปิ้ล
Flippign Lettesr Aroudn
challEneg wiht swappde lettesR
ขอบคุณ
คุณยินดีต้อนรับ
อ. ศรีสัชนาลัย
พลิกตัวอักษรไปรอบ ๆ
วิธีการเปลี่ยนค่าด้วย letteRs ที่สลับกัน

ขอบคุณDJMcMayhemสำหรับชื่อเรื่อง นี้เดิมเป็นCMC


เราขอเรียงคำได้ไหม?
Shaggy

@Shaggy ไม่เอาต์พุตจะต้องเป็นสตริง (หรือรายการอักขระตามค่าเริ่มต้น)
Mr. Xcoder

เราขอพื้นที่ต่อท้ายในแต่ละอินพุตได้ไหม
FlipTack

@FlipTack ได้รับอนุญาตในรุ่นเริ่มต้น แต่ฉันได้ลบกฎนั้นออกก่อนคำตอบใด ๆ ที่จะใช้ที่ถูกโพสต์ (ส่วนหนึ่งเป็นเพราะผู้ใช้บางคนในการแชทบอกฉันว่าฉันทำสิ่งนี้ง่ายเกินไปและฉันเห็นด้วยกับพวกเขา) ไม่ไม่อนุญาต
Mr. Xcoder

1
@Fabian คำหนึ่งคำมีตัวอักษรสองตัวหรือมากกว่า
Mr. Xcoder

คำตอบ:


16

V , 4 5ไบต์

òeXp

ลองออนไลน์!

|| หมายถึงเคอร์เซอร์

บัฟเฟอร์เริ่มต้นด้วย|w|ord and more wordsและเคอร์เซอร์อยู่ที่ตัวอักษรตัวแรก

ซ้ำ ò

ไปที่eคำใดคำหนึ่ง

wor|d| and more words

ลบXอักขระทางด้านซ้ายของเคอร์เซอร์

wo|d| and more words

pสำรองไว้เหนืออักขระต่อไป

wod|r| and more words

สิ้นสุดโดยปริยายòทำซ้ำกระบวนการเดียวกันสำหรับคำอื่น ๆ จนกว่าจะถึงจุดสิ้นสุดของบัฟเฟอร์


2
ภาษาที่เหมาะสมสำหรับงาน :)
DJMcMayhem

คุณหมายถึง "Repeatly" แทนที่จะเป็น "Recursively" หรือไม่
NieDzejkob

@NieDzejkob วิกิ V ใช้คำว่า "วนซ้ำ" เพื่ออธิบายòคำสั่งgithub.com/DJMcMayhem/V/wiki/Normal-Mode-Commands
Kritixi Lithos

10

เยลลี่ขนาด 7 ไบต์

Ḳœ?@€2K

ลิงก์ monadic ที่รับและส่งคืนรายการอักขระ

ลองออนไลน์!

อย่างไร?

Ḳœ?@€2K - Link: list of characters
Ḳ       - split at spaces
     2  - literal two
    €   - for €ach:
   @    -   with sw@pped arguments:
 œ?     -     nth permutation (the 2nd permutation has the rightmost elements swapped)
      K - join with spaces

นั่นเป็นการละเมิดวิธีเรียงสับเปลี่ยนที่ดี ทางเลือก
Mr. Xcoder

@ Mr.Xcoder Ḳ2œ?ЀKยังใช้งานและใช้งานได้รวดเร็วเพียงครั้งเดียว
เดนนิส

7

Brain-Flakขนาด 122 ไบต์

{(({})[((((()()){}){}){}){}])((){[()](<{}>)}{}){{}<>(({}({}))[({}[{}])])(<>)}{}({}<>)<>}<>(({}({}))[({}[{}])]){({}<>)<>}<>

ลองออนไลน์!

ภาษาที่แย่ที่สุดสำหรับงาน :)

อ่านได้รุ่นอ่านเพิ่มเติมได้เล็กน้อย:

{
    (({})[((((()()){}){}){}){}])((){[()](<{}>)}{})

    {
        {}
        <>

        (({}({}))[({}[{}])])

        (<>)
    }
    {}

    ({}<>)<>

}<>

(({}({}))[({}[{}])])

{

    ({}<>)
    <>
}<>

ฉันไม่สามารถเชื่อว่าเรื่องนี้มีความยาวกว่ารุ่น brainfuck ...
Pureferret

@pureferret Brain-flak มีแนวโน้มที่จะยาวกว่า brainfuck ส่วนใหญ่ทำให้มันต้องสองไบต์ต่อคำสั่งดั้งเดิมที่สมองต้องมีสอง
DJMcMayhem

7

Haskell , 40 ไบต์

(f=<<).words
f[a,b]=b:a:" "
f(x:r)=x:f r

ลองออนไลน์! ตัวอย่างการใช้งาน: อัตราผลตอบแทน(f=<<).words $ "abc xyz""acb xzy "


ดังนั้นคุณจะบอกฉันว่าวิธีที่สั้นที่สุดคือทั้งสองวิธีรวมกันหรือไม่ > _ <
มนุษย์


6

Python 3 , 50 ไบต์

print(*(w[:-2]+w[:-3:-1]for w in input().split()))

ลองออนไลน์!

คำตอบนี้ใช้ในทางที่ผิดพฤติกรรมของ Python 3 ในการพิมพ์: อาร์กิวเมนต์หลายรายการจะถูกพิมพ์ด้วยช่องว่างเดียวระหว่างพวกเขา แน่นอนเราไม่สามารถให้มันขัดแย้งกันหลายครั้งได้เพราะเราไม่รู้ว่าจะมีคำกี่คำในอินพุต ดังนั้นเราจึงใช้ประกอบเครื่องหมาย เป็นพื้น

print(*[a,b,c])

เป็นสิ่งเดียวกับ

print(a,b,c)

การทารุณกรรมที่ทำให้โปรแกรมเต็มรูปแบบกลายเป็นสั้นกว่าฟังก์ชั่น / แลมบ์ดาที่เราต้องใช้' '.joinหรืออะไรทำนองนั้น


ดูเหมือนว่างูหลาม 2 saves 2 for w in input().split():print w[:-2]+w[:-3:-1],ไบต์โดยการเขียน ใน Python 3 การแยกอักขระสองตัวสุดท้ายจะทำงานได้ดีprint(*(''.join(a)+c+b for*a,b,c in input().split()))ยกเว้นว่าaต้องมีการจัดแจงใหม่เป็นสตริง
xnor

5

Matlab (R2016b), 51 50 ไบต์

บันทึก49 50 (!) ไบต์ขอบคุณ @Giuseppe

function s(a),regexprep(a,'(\w)(\w)( |$)','$2$1 ')

และคำตอบก่อนหน้าของฉัน:

Matlab (R2016b) ขนาด 100 ไบต์

(เพียงเพื่อความสนุกของมัน: P)

function s(a),a=regexp(a,' ','split');for i=1:length(a),fprintf('%s ',a{i}([1:end-2 end end-1])),end

คำอธิบาย:

function s(a) % Defining as a function...
a=regexp(a,' ','split'); % Splits the input string at the spaces
for i=1:length(a) % Loops through each word
    fprintf('%s ',a{i}([1:end-2 end end-1])) % And prints everything with the last two characters swapped.
end

1
คำหนึ่งตัวอักษรไม่สามารถเกิดขึ้นได้เนื่องจากคำนั้นถูกกำหนดให้มีอย่างน้อยสองตัวอักษร
Giuseppe

จะregexprepทำงานที่นี่ สิ่งที่ชอบregexprep(a,'(\w*)(\w)(\w)','\1\3\2')?
Giuseppe

D = นี่ เป็น มหากาพย์! ฉันคิดว่าคุณควรโพสต์คำตอบนี้เนื่องจากมันแตกต่างจากของฉันทั้งหมด มีเพียงสิ่งเดียวคือว่า Matlab อ้างอิงการแข่งขันด้วย$1และไม่ดังนั้นมันจะเป็น\1 regexprep(a,'(\w*)(\w)(\w)','$1$3$2')
Thiago Oleinik

1
คุณควรโพสต์เป็นคำตอบแยก / ในคำตอบนี้ เป็นเรื่องดีเสมอที่จะเห็นว่า regex จะช่วยหรือไม่กับความท้าทายของสตริง! นอกจากนี้ฉันไม่เข้าใจเครื่องยนต์ regex ของ MATLAB อย่างชัดเจนดังนั้นมันจึงไม่ยุติธรรมสำหรับฉันที่จะได้รับเครดิต
Giuseppe

1
function s(a),regexprep(a,'(\w)(\w)( |$)','$2$1 ')ยังคงมีอีกไบต์ที่สั้นกว่า!
Giuseppe


4

Prolog (SWI) 60 ไบต์

[A,B]+[B,A].
[A,B,32|U]+[B,A,32|Y]:-U+Y,!.
[A|U]+[A|Y]:-U+Y.

ลองออนไลน์!

คำอธิบาย

ครั้งแรกที่เรากำหนดกรณีฐาน:

p([A,B],[B,A]).

ซึ่งหมายความว่าจะเปลี่ยนตัวอักษรสองตัวสุดท้าย

จากนั้นเราจะกำหนดสิ่งที่จะเกิดขึ้นหากเราอยู่ถัดจากช่องว่าง:

p([A,B,32|U],[B,A,32|Y]):-p(U,Y),!.

สตริงสองตัวจับคู่กันถ้าอยู่หน้าเว้นวรรคตัวอักษรก่อนที่จะเว้นวรรคจะถูกสลับและส่วนที่เหลือถ้าสตริงตรงกัน จากนั้นเราก็ใช้!ในการกรีด

กรณีสุดท้ายของเราคือถ้าเราไม่ได้เว้นวรรคตัวอักษรสองตัวแรกต้องตรงกัน

p([A|U],[A|Y]):-p(U,Y).

4

ภาษา Wolfram , 117 ไบต์

StringReplace[RegularExpression["\\b[[:alpha:]]{2,}\\b"]:>StringDrop[StringInsert["$0",StringTake["$0",{-1}],-3],-1]]

ลองออนไลน์!

นำไปใช้กับสตริงทดสอบ

StringReplace[
  RegularExpression["\\b[[:alpha:]]{2,}\\b"] :> 
   StringDrop[StringInsert["$0", StringTake["$0", {-1}], -3], -1]] /@
 {"Thansk", "Youer welcoem", "This is an apple", 
  "Flippign Lettesr Aroudn", "tHe oDd chALlEneg wiht swappde lettesR"} // Column
Thanks
Youre welcome
Thsi si na appel
Flipping Letters Around
teH odD chALlEnge with swapped letteRs

4
ยินดีต้อนรับสู่ PPCG!
Steadybox

@ Steadybox ขอบคุณ
Edmund

4

R , 111 51 41 ไบต์

ได้รับความอนุเคราะห์จาก @Giuseppe วิธีการ regex ซึ่งทำให้วิธีการแบบเก่าของฉันหลุดออกจากน้ำ

cat(gsub("(.)(.)\\b",'\\2\\1',scan(,"")))

1
regex มีประสิทธิภาพมากขึ้นที่นี่: ลองออนไลน์!
จูเซปเป้

(ไม่ใช่ว่าฉันไม่ชอบความกล้าที่จะใช้วิธีการจัดการสตริงบริสุทธิ์ใน R)
Giuseppe


@Giuseppe ว้าวทำได้ดีมาก! ฉันได้แก้ไขพวกเขาเป็นคำตอบของฉันแม้ว่าคุณจะต้องการคำตอบของคุณเองโปรดไปข้างหน้า!
rturnbull

1
ไม่ต้องห่วงหรอก ฉันเล่นกอล์ฟลงไปอีก 10 ไบต์: เปลี่ยนวิธีการ regex อื่นและ70 ไบต์เก่า
Giuseppe

4

APL (Dyalog Classic)ขนาด 28 ไบต์

1↓∊((¯2↓⊢),2↑⌽)¨' '(,⊂⍨⊣=,)⍞

⎕MLและ⎕IOทั้งสอง1,

ลองออนไลน์!

คำอธิบาย

  • ... (,⊂⍨⊣=,) ... แยก (ในขณะที่รักษาเส้นขอบและต่อท้ายจนถึงต้น ... )
  • ... ⍞ ... อินพุต ...
  • ... ' ' ... ... ที่ช่องว่าง
  • ... ( ... )¨ ... จากนั้นไปที่องค์ประกอบแต่ละส่วนของ:
    • ... , ... เชื่อมต่อ ...
    • ... (¯2↓⊢) ... ... ทุกรายการยกเว้นสองรายการสุดท้าย ...
    • ... 2↑⌽ ... ... กับการย้อนกลับของสององค์ประกอบสุดท้าย
  • 1↓∊ ... ในที่สุดให้ส่งคืนทั้งหมดยกเว้นองค์ประกอบแรกของผลลัพธ์ที่แบน

ส่งคืนทั้งหมดยกเว้นเป็นรายการแรก
Adám



3

J , 20 19 11 ไบต์

มอบเครดิตให้แก่ @Bolce Bussiere

1&A.&.>&.;:

ลองออนไลน์!

       &.;:      on words
    &.>          on each
  A.             apply the permutation
1&               number 1, swap the last two elements

1
13 Bytes ด้วย(1&A.&.>)&.;:
Bolce Bussiere

@BolceBussiere perfect
FrownyFrog

คุณสามารถเพิ่มคำอธิบายได้ไหม? สงสัยว่าถ้าฉันสามารถส่งไปที่ K เพื่อลดจำนวนไบต์ที่น่าอายของโซลูชันของฉัน!
ท้องถนน

3

อลิซ 24 ไบต์

/0RR'.%$1\' o
\ix*o ne@/

ลองออนไลน์!

คำอธิบาย

/...\' o
\.../

สิ่งนี้ก่อให้เกิดการวนซ้ำที่ร่างกายวนรอบเป็นตัวอย่างข้อมูลเชิงเส้นตรงและเราดำเนินการ ' oในโหมด Cardinal ระหว่างการวนซ้ำสองครั้งทุกครั้ง หลังเพิ่งพิมพ์พื้นที่

การตีแผ่โครงสร้างคดเคี้ยวไปมาของรหัส Ordinal ร่างกายวนลูปเชิงเส้นมีลักษณะเช่นนี้:

iR*' %e10xRo.n$@

ทำลายมันลง:

i     Read all input. On subsequent iterations, this will push an empty string.
R     Reverse.
*     Join. On the first iteration, this joins the input to an implicit empty string,
      which does nothing. On subsequent iterations, it will join the empty string to
      the word on top of the string, thereby getting rid of the empty string.
' %   Split around spaces. On the first iteration, this will split the input
      into individual words. On subsequent iterations, this does nothing.
e10   Push "10".
x     Use this to permute the (reversed) word on top of the stack. In
      particular, the word is rearranged with the same permutation that is
      required to sort the string "10", which means the first two letters
      get swapped (which correspond to the last two letters of the actual
      word).
R     Reverse the swapped word.
o     Print it.
.n$@  If there are no words left on the stack, terminate the program.

เพิ่งสังเกตเห็นว่าการสลับตัวอักษรสามารถทำได้ในสามไบต์ ( h~Z) แทนที่จะเป็นสี่ ( e10x) แต่ฉันไม่เห็นวิธีการปรับโครงร่างเพื่อบันทึกไบต์โดยรวมโดยรวม
Martin Ender

2

brainfuck , 109 100 ไบต์

แก้ไข: ไม่ต้องจัดการกับคำตัวอักษรหนึ่งคำ

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

ลองออนไลน์!

พิมพ์พื้นที่ต่อท้าย

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

,[>++++[-<-------->],] Puts input on the tape and subtracts 32 from each character
                       This separates each word

>+[- Start the loop
   <[>++++[<++++++++>-]<[->>+<<]<] Add 32 to each letter of the word
                                   Skip this on the first iteration for the last word

   <<[->>+<<]>[[-<+>]>] Swaps the last two letters of the word
   <<[>+>+>]- If there is another word to the left continue loop
              Also set up to add a space to the end of the word
 <] End loop
 >>>>>>>[.>] Print the modified string

รุ่นก่อนหน้า 109 ไบต์

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

ลองออนไลน์!



1

PHP , 119 107 ไบต์

แก้ไข: ขอบคุณมนุษย์ทั้งหมด

<?php foreach(explode(" ",trim(fgets(STDIN)))as$w)echo substr($w,0,strlen($w)-2).strrev(substr($w,-2))," ";

ลองออนไลน์!


1
คุณไม่สามารถสร้าง$wordชื่อตัวแปรอักขระเดียวได้หรือไม่
มนุษย์

@Totallyhuman Yup! ฉันเขียนเวอร์ชันเต็มแล้วบีบอัด แต่ไม่สังเกตว่า ขอบคุณ.
Zerquix18

แท็กเปิด PHP สามารถละเว้นได้ในคำตอบที่ช่วยให้คุณประหยัด 6 ไบต์
แดเนียลดับบลิว

ฉันสงสัยว่าfgets(STDIN)สามารถละเว้นหรือแทนที่ด้วย$xเช่นกันไม่ใช่คำตอบทั้งหมดนับการป้อนข้อมูลคำตอบของพวกเขา
Daniel W.

trim()ควรจะไม่จำเป็น
ติตัส

1

Haskell , 41 ไบต์

foldr(%)" "
a%(b:' ':r)=b:a:' ':r
a%s=a:s

ลองออนไลน์!

เอาต์พุตที่มีช่องว่างต่อท้าย

ซ้ำแล้วซ้ำอีก' ':rดูสิ้นเปลือง แต่a%(b:t@(' ':r))=b:a:tความยาวเท่ากันและยาวกว่าa%(b:t)|' ':_<-t=b:a:tหนึ่งไบต์


Haskell , 41 ไบต์

f(a:b:t)|t<"A"=b:a:f t|1>0=a:f(b:t)
f e=e

ลองออนไลน์!


1

sed , 20 17 + 1 (-r) = 18 ไบต์

s/(.)(.)\b/\2\1/g

ลองออนไลน์!


ลิงค์ TIO ไม่ตรงกับรหัสที่คุณโพสต์ไว้ ลิงก์ TIO ยาวขึ้นอีกสองสามไบต์
Xcali

อ๊ะแก้ไขลิงค์
Noskcaj

|$คุณสามารถลบ มันไม่ได้ทำอะไรเลย (เพื่อให้ทำสิ่งที่คุณคาดหวัง(.)(.)(\b|$)แต่ไม่จำเป็นเพราะ\bตรงกับจุดสิ้นสุดของสตริงแล้ว)
Jordan

อ๊ะหมายถึงการกำจัดสิ่งนั้น ขอบคุณ
Noskcaj

1

PHP, 65 ไบต์

ต้องการ PHP 7.1 (หรือใหม่กว่า)

for(;$s=$argv[++$i];$s[-1]=$s[-2],$s[-2]=$c,print"$s ")$c=$s[-1];

ใช้ประโยคเป็นอาร์กิวเมนต์บรรทัดคำสั่งที่แยกต่างหาก -nrทำงานด้วย


ทำงานบนสตริงเดี่ยว77 + 1 ไบต์ :

foreach(explode(" ",$argn)as$s){$c=$s[-1];$s[-1]=$s[-2];$s[-2]=$c;echo"$s ";}

-nRทำงานเป็นท่อด้วย


... หรือลองพวกเขาออนไลน์


1

Java 8, 35 ไบต์

s->s.replaceAll("(.)(.)\\b","$2$1")

คำตอบของ Google ชีตพอร์ตของ@TaylorScottหลังจากฉันเล่นกอล์ฟสองไบต์ แก้ไข: ฉันเห็นว่าตอนนี้มันเป็นท่าเรือของคำตอบทางจอประสาทตาของนีลหลังจากไบต์ทั้งสองของฉันกอล์ฟ

คำอธิบาย:

ลองออนไลน์

s->                           // Method with String as both parameter and return-type
   s.replaceAll("(.)(.)       //  Replace any two characters,
                       \\b",  //  with a word-boundary after it (space or end of String)
                "$2$1")       //  With the two characters swapped

1

Google ชีต 33 ไบต์

ฟังก์ชันแผ่นงานที่ไม่ระบุชื่อที่รับอินพุตจากเซลล์A1และเอาต์พุตไปยังเซลล์ที่เรียก

=RegExReplace(A1,"(.)(.)\b","$2$1

-2 Bytes ขอบคุณ@KevinCruijssenสำหรับการใช้งาน(.)มากกว่า(\w)


ทั้งคู่(\w)สามารถเล่นกอล์ฟได้(.)หากฉันไม่เข้าใจผิด \bอยู่แล้วข้อบ่งชี้ที่จะมองหาคำเท่านั้น (ไม่แน่ใจทั้งหมด แต่ใช้งานได้ใน Java)
Kevin Cruijssen

@KevinCruijssen - คุณถูกต้องมันสามารถ ขอขอบคุณ!
เทย์เลอร์สกอตต์

1

JavaScript (Node.js) , 38 36 32 bytes

s => s.replace (/ (.) (.) (| $) / g, "$ 2 $ 1") 
s=>s.replace(/(.)(.)\b/g,"$2$1")

ลองออนไลน์!

RegExp วิธีมารยาท @Giuseppe (แม้ว่าฉันจะคิดถึงสิ่งนี้อย่างอิสระ) โดยสมมติว่ามีคำคั่นด้วยช่องว่างเดียว

-2 สำหรับการพิจารณาเพียง 1 ช่องว่างและเพิ่มพื้นที่ต่อท้าย

-4 ขอบคุณ @Shaggy


Doesn't matter if there are more spaces, I think
l4m2

@ l4m2 แต่ถ้ามีช่องว่างมากขึ้นแล้วมันจะกลายเป็น s=>s.replace(/(.)(.)( +|$)/g,"$2$1$3")38
Shieru Asakoto

@ l4m2 BTW คำตอบเดิมของฉันคือs=>s.replace(/(.)(.)(\s|$)/g,"$2$1$3")
Shieru Asakoto

ab abc abcd abcde abcdef ไม่ab_, bc_, cd_, de_, ___, ef_,___
l4m2

1
F=s=>s.replace(/(.)(.)(?!\w)/g,"$2$1")ความยาวเท่ากัน
l4m2

1

K (oK) , 23 22 ไบต์

" "/{x@prm[!#x]1}'" "\

ลองออนไลน์!

ตัวอย่าง:

" "/{x@prm[!#x]1}'" "\"Hello World"
"Helol Wordl"

คำอธิบาย:

วิธีแก้ปัญหาพอร์ตของFrownyFrogเพื่อประหยัด1 ไบต์.

ฉันจะกลับมาที่นี่

" "/{prm[x]1}'" "\ / the solution
              " "\ / split input on " "
    {       }'     / apply lambda to each
     prm[x]        / permute input x
           1       / and take the 2nd result
" "/               / join with " "

โซลูชันก่อนหน้า:

  • " "/-2{(x_y),|x#y}'" "\ 23 bytes

1

05AB1E, 7 bytes

#vy`sðJ

Try it online!

-1 thanks to Magic Octopus Urn.

Prints one trailing space.


This is 11 bytes
Daniel W.

2
@DanFromGermany No, 05AB1E has a code page in which this can be represented as 8 bytes.
Erik the Outgolfer

Can you run the program represented in 8 bytes?
Daniel W.

@DanFromGermany Yes, the 05AB1E interpreter can run this program from a file in the 05AB1E encoding.
Erik the Outgolfer

1
@MagicOctopusUrn It's not a list though, it's after `.
Erik the Outgolfer


0

SNOBOL4 (CSNOBOL4), 136 119 bytes

	I =INPUT
B	I SPAN(&LCASE &UCASE) . Y ARBNO(' ') =:F(O)
	Y RPOS(2) REM . Z =REVERSE(Z)
	O =O Y ' '	:(B)
O	OUTPUT =O
END

Try it online!

Prints with a trailing space. You know you've done something wrong when a language is a backronym for StriNg Oriented and symBOlic Language and your code is longer than Brain-Flak :( now it's slightly better.

Line B takes I and replaces (alphabetic characters saved as Y)(some number of spaces) with the empty string.

The following line extracts the last 2 characters of Y as Z and replaces them as Z reversed, then the next line concatenates O, Y, and a single space character.

Finally, it prints when I no longer matches the required pattern in line B.


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