Dada uma sequência, substitua todas as aspas duplas à esquerda em dois reticulares e todas as aspas duplas à direita em duas aspas simples.
Aspas à esquerda significam as aspas que iniciam uma cotação. As aspas à direita significam as aspas que terminam uma cotação. As cotações não podem ser aninhadas. Você pode assumir que há um número par de aspas duplas na string.
Exemplos
Entrada:
"To be or not to be," quoth the Bard, "that
is the question".
The programming contestant replied: "I must disagree.
To `C' or not to `C', that is The Question!"
Resultado:
``To be or not to be,'' quoth the Bard, ``that
is the question''.
The programming contestant replied: ``I must disagree.
To `C' or not to `C', that is The Question!''
Respostas:
Ilegível ,
789777 bytes-12 bytes usando a variável X34 em vez de X6.
Experimente online!
Exibido em fonte de largura variável, de acordo com o tributo tradicional ao nome do idioma.
Eu aprendi ilegível para esse desafio, porque é obviamente a melhor ferramenta para o trabalho. Os únicos personagens permitidos em Ilegível são
'
e"
, com certeza, é perfeitamente adequado para um desafio que envolve a mudança"
para''
. Não é?Explicação:
Na verdade, as chamadas para X34 são chamadas para X (X5), pois X5 = 34.)
fonte
Retina , 13 bytes
Aprendendo Retina rapidamente porque, por algum motivo, não gosto de ganhar o Japt e sinto que uma solução C # usaria expressões regulares de qualquer maneira. Sei que há uma resposta Retina, mas não a usei ao criar isso, e também a encontrei (exatamente).
Experimente online!
fonte
JavaScript (ES9), 34 bytes
Trabalhando em blocos cotados:
Experimente online!
JavaScript (ES6), 38 bytes
Trabalhando em cada aspas duplas separadamente:
Experimente online!
fonte
Geléia ,
1513 bytesExperimente online!
Programa completo.
fonte
Python 3 , 65 bytes
Experimente online!
-8 bytes graças a Erik the Outgolfer
fonte
s[0].replace
com umas[0]=='"'
verificação explícita , além de outras modificações).Japonês , 12 bytes
Seria 11 apenas por uma limitação (ou talvez seja um bug) do Japt.
Tente
fonte
Q
aqui: \,
.Q
no lugar de'"
TeX,
5432 bytesPara um desafio de substituição de cotações TeX, também precisamos de uma versão TeX, é claro!
...
é a sequência de entrada, portanto, não é adicionada à contagem de bytes.fonte
\def"#1"{``#1''}
? (ou\long\def
se você espera que uma cotação ultrapasse o limite de um parágrafo)Carvão , 23 bytes
Experimente online! Link é a versão detalhada do código. Inclui 8 bytes para evitar um formato de entrada complicado. Explicação:
Colete linhas de entrada até que uma linha vazia seja alcançada.
Junte as linhas em caracteres de nova linha.
Divida a entrada entre aspas.
Mapeie cada parte e concatene os resultados para impressão implícita.
Deixe a primeira parte inalterada.
Prefixe a cotação apropriada, dobrada.
fonte
R , 40 bytes
Experimente online!
Lê a entrada da string, separando a cada
"
, fornecendo um vetor de strings. Em seguida, cola essas cordas, alternando entre os dois encostos e os apóstrofos duplos como separadores, reciclando-os conforme necessário.Alguém provavelmente postará uma resposta R mais curta com base em uma expressão regular ... Ainda assim, acho que essa resposta é mais típica de R.
Explicação da
scan(,"",,,'"',"")
peça:fonte
Perl 6 , 23 bytes
Experimente online!
Droga, a solução óbvia é mais curta. Substitui cada parte citada por uma versão pelas aspas apropriadas.
Perl 6 , 24 bytes
Experimente online!
Substitui cada aspas duplas, alternando entre os dois conjuntos de caracteres.
fonte
Retina , 15 bytes
Experimente online! Afia a resposta entediante Retina 0.8.2 por 1 byte. Explicação:
Duplique todas as aspas.
Substitua ciclicamente as aspas por pares de reticulares e aspas simples.
Resposta chata de 16 bytes da Retina 0.8.2 para completude:
Experimente online!
fonte
PHP , 62 bytes
Solução não-RegEx:
Experimente online!
PHP , 48 bytes
Solução RegEx do Porto de Arnauld :
Experimente online!
fonte
C (gcc) ,
6968 bytesExperimente online!
Um byte raspado por @ceilingcat!
fonte
Labirinto , (43?) 53 bytes
Experimente online!
Uma versão em golf deste programa muito mais simples de 92 bytes:
Se não precisamos manipular a entrada que contém o byte zero, então 43 bytes :
fonte
Python 2 , 57 bytes
Experimente online!
Embora eu realmente goste da resposta de Jitse .
fonte
flags
argumento:r'(?s)"(.*?)"'
(GNU) sed ,
38 3330 bytes-4 , removendo a
-n
bandeira e implicitamente a impressão emn
, -1 , reutilizando anterior/expression/
, graças @Cowsquack. -3 usando ramificação implícita.Experimente online! Experimente online!Experimente online!Algum rótulo bastante básico pulando.
Provavelmente isso pode ser jogado por um byte ou dois.fonte
-n
sinalizador deve economizar um pouco mais. (E, claro, há o trivialsed -z
solução que eu presumo que você tenha intencionalmente evitado)man sed
um pouco e cheguei aos 30. Sinta-se livre para me informar qualquer coisa que eu perdi, você tem a experiência de golfe nesse idioma. (Oh,-z
é novo para mim, mas concordo. Vou ficar sem ele.)05AB1E , 15 bytes
Experimente online!
Não há expressões regulares em 05AB1E; portanto, dividimos
"
, fazemos uma lista de alternâncias``
e''
, em seguida, intercalamos as duas.fonte
Haskell ,
676058 bytesExperimente online!
A função relevante é
(#0)
.Como eu originalmente pensava que a pergunta também exigia a conversão de aspas simples, aqui está uma versão que trata de ambos:
Haskell , 125 bytes
Experimente online!
fonte
"\""
deve ser"''"
(dois apóstrofos)"
no tex, você pode usá-lo aqui.QuadR , 14 bytes
Experimente online!
Localização / substituição simples usando o wrapper @ Adám para a
⎕R
função eplace do Dyalog APL .Quão:
fonte
Vermelho , 79 bytes
Experimente online!
fonte
Gelatina , 13 bytes
Um programa completo.
Experimente online!
Quão?
fonte
Lua , 36 bytes
Experimente online!
Uau, apenas dois caracteres a mais do que a solução js.
fonte
Perl 5
-p0
, 19 bytesExperimente online!
fonte
Stax , 11 bytes
Execute e depure
Procedimento:
'"'
por um bloco que produz saídas alternadas de pares de reticulares e foreticks (?)fonte
Java 8, 40 bytes
Experimente online.
Explicação:
Explicação Regex:
fonte