var QUESTION_ID=68504,OVERRIDE_USER=40695;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Respuestas:
Pyth, 8 bytes
@xnor sugirió este enfoque más simple en la respuesta Pyth de @ FryAmTheEggman, luego lo traduje a Pyth.
Utiliza el práctico comportamiento de
X
(traducir) cuando se le dan solo dos argumentos: traduce del segundo argumento al segundo argumento invertido. Hacemos esto primero con el alfabeto en minúsculas (G
), y luego con mayúsculasG
.fuente
C, 59 bytes
Perdón por mencionar C nuevamente, pero me decepcionó un poco ver solo las funciones C aquí. Tenía la impresión de que OP estaba buscando un producto utilizable.
Compilado en Ubuntu 14.04 con un simple:
El ejecutable resultante lee cualquier número de líneas desde stdin y escribe el resultado en stdout.
Gracias a muchos de los otros carteles por el truco XOR.
fuente
CJam, 17 bytes
Quería ayudar a GamrCorps a desarrollar su solución CJam, pero el resultado terminó tan diferente que decidí hacer una respuesta por separado.
Pruébalo en línea.
Explicación
fuente
JavaScript (ES6),
6967 bytesUtiliza la misma estrategia que mi respuesta de Japt :
Maldice tus nombres de propiedad increíblemente largos, JS ...
fuente
document.getElementById
document.getElementsByClassName
o, en Firefox y Chrome,document.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC
Retina ,
171413 bytesCódigo:
Explicación:
Esto hace algunas cosas mágicas y completa la tarea.
Probarlo aquí .
fuente
\
. Desafortunadamente, todavía no pude agregar clases de caracteres para letras y clases de caracteres invertidas.\T`lL`RlRL
.Pyth,
109¡Gracias a Jakube por guardar un byte con la nueva característica de
;
!Banco de pruebas
Una explicación rápida: reducir comenzando con la entrada sobre los números 0 y 1. La operación a realizar es traducir el alfabeto en minúsculas con cualquiera
r...0
or...1
cuáles son las funciones inferior y superior de python, respectivamente, aplicadas a él y luego revertidas.fuente
uXGr;H)2z
X
con el alfabeto y luego con el alfabeto en mayúscula?XXzG)rG1
? Eso parece funcionar.Julia,
746147 bytesEsta es una función lambda que acepta una cadena y devuelve una cadena. Para llamarlo, asígnelo a una variable.
Emparejamos cada letra usando una expresión regular y reemplazamos cada letra con el carácter ASCII correspondiente a 31 XOR el código ASCII para la letra, menos 4.
fuente
$
lo que es posible que desee actualizar eso⊻
. No sabía que puedes usar una función enreplace
.C,
150129 bytesEsta función simplemente convierte char a int y agrega el desplazamiento apropiado al int antes de imprimir. Sé que no es el más corto, pero no vi una implementación en C.
Ejemplo de uso
ACTUALIZACIÓN: acortado un nombre de variable.
fuente
temp
) tengan exactamente un carácter de largo.i,t;r(char*s){for(;i<strlen(s);i++){t=s[i]+25;t=t<116?180-t:244-t;isalpha(s[i])?putchar(t):putchar(s[i]);}}
Japt,
2322 bytesPruébalo en línea!
Cómo funciona
fuente
C, 64
Una función nula que modifica la cadena en su lugar.
Prueba: ideone
fuente
c;t(char*p){for(;c=*p;)*p++=c>64&c<91|c>96&c<123?(c^31)-4:c;}
R,
6961 bytesGracias a @Giuseppe por eliminar algunos bytes adicionales:
Versión previa:
Esta es una función anónima. Uso:
fuente
intToUtf8(c(122:97,90:65))
en lugar de lasraw
conversiones, y también puedes deshacerte de ellascat
. Tengo la costumbre de venir al golf con respuestas de más de 1 año ...En serio, 31 bytes (no competitivos)
Hex Dump:
Pruébalo en línea
Expl:
Acabo de darme cuenta de que la especificación dice que no hay espacios en blanco adicionales, pero no hay forma de suprimir las nuevas líneas finales en la salida de Gravemente, por lo que no hay una solución seria.
fuente
ESACREPPUesacrewol
significaRubí, 40 bytes.
Nueva solución: robó ese poco de magia de algunas de las otras publicaciones aquí:
Ruby,
5546 bytes9 bytes de descuento gracias a @manatwork
prueba de funcionamiento:
fuente
Jolf, 15 bytes
Probar suite , o probarlo con su propia entrada
fuente
𝔼𝕊𝕄𝕚𝕟 2, 12 caracteres / 26 bytes (no competitivo)
Try it here (Firefox only).
Se agregó la función transliterar después de que se publicó el desafío.
Explicación
fuente
CJam, 21 bytes
No es una solución óptima ... todavía ... Pruébelo en línea
Es difícil de explicar sin agrupar cosas, por lo que aquí hay una explicación general: obtiene información, empuja el alfabeto en mayúscula dos veces y en minúscula dos veces, gira las cosas, combina cadenas en mayúscula y minúscula, invierte una y usa transliteración (similar a la respuesta Retina).
fuente
C (función), 50
Esto se basa en las tres respuestas C anteriores , por lo que se agradece a @Ruud, @Danwakeem y @ edc65.
Esta función modifica una matriz de caracteres en su lugar.
Entiendo que las entradas de funciones están permitidas a menos que estén explícitamente prohibidas en la pregunta.
Pruébalo en línea.
fuente
PostgreSQL,
118125bytesSqlFiddleDemo
Salida:
Entrada:
SELECT text'...'s
EDITAR:
Entrada como tabla:
SqlFiddleDemo
Salida:
fuente
Python 3,
195169168166 bytes¡Gracias a @TrangOul por -2 bytes!
¿Cómo no vi que podría haber jugado golf antes?
(algo así) sin golfista:
Pruébalo en Ideone!
fuente
[]
dejoin
.generator object <genexpr> at...
, pero lo probaréstr
valores] se puede pasar a lajoin()
función.Python, 61 bytes
Una función anónima. En letras, realiza la operación de inversión en la representación de bits agregando 4 y luego volteando los últimos cinco bits, similar a la respuesta Javascript de ETHproductions .
fuente
Haskell,
119104bytesGuardado 15 bytes gracias a @nimi.
Uso:
Explicación
Soy nuevo en Haskell ... en la programación funcional ... y en el sitio, y sé que hay (muchas) mejores respuestas a esta pregunta, pero tengan paciencia conmigo.
fuente
let
. Comience directamente conc=fromEnum
. Uso(155-c x)
y(219-c x)
. c)True
puede ser reemplazado por1<2
. - El código no se carga para mí con el error de "variable de tipo ambiguo" para funcionesc
ys
(ghci 7.10.2), pero esto se puede solucionar fácilmente enf[]=""
lugar def[]=[]
.Perl 6 , 28 bytes
Uso:
fuente
Warning: Use of "ord" without parentheses is ambiguous at (eval 8)[/System/Library/Perl/5.18/perl5db.pl:732] line 2.
No sé nada sobre Perl, ¿estoy haciendo algo mal? ¿Cómo ejecutaría esto?m: my &swap = {S:g/\w/{chr $/.ord+4+^31}/}; say swap ('a'..'z').join
Java, 136 bytes
Ejemplo de uso:
Probablemente el peor lenguaje comúnmente utilizado en términos de tamaño de byte.
fuente
void x(String i){for(Character c:i.toCharArray())System.out.print(c.isLetter(c)?(char)(c<91?90-(c-65):122-(c-97)):c);}
( 118 bytes )void y(String i){for(int c:i.getBytes())System.out.print((char)(c>65&c<91|c>96&c<123?c<91?90-(c-65):122-(c-97):c));}
( 116 bytes )90-(c-65)
en-c+65+90
y122-(c-97)
en-c+97+122
, lo que ahorra un byte cada uno.Unix shell + tr + printf, 35 bytes
Aquí tienes una respuesta canónica en tr. Pensé cómo podría una pregunta a transcribir el alfabeto ir sin una respuesta canónica a tr ansliterate el alfabeto?
tr por sí mismo ni siquiera hace un "¡Hola, mundo!" y como tal no es un lenguaje de programación, entonces
marqué la respuesta como no competitiva[1] .[1]: Editar: en realidad, Unix shell es el lenguaje y tr es la biblioteca estándar . Gracias a Downgoat y Digital Trauma por ayudarme a detectar esto.
fuente
tr
está en coreutils) como la biblioteca estándar. Ver innumerables de mis respuestas ;-)tr: range-endpoints of 'Z-A' are in reverse collating sequence order
. Creo que tienes que hacer algo comotr A-Za-z $(printf %s {Z..A} {z..a})
(y reemplazar$( )
con backticks)printf
, después de todo, está especificado por Posix . También es una compilación en bash que es bastante omnipresente en estos días. De todos modos, tener algo preinstalado en el sistema de todos no es un requisito previo para el golf de código : tampoco todos tienen CJam en su sistema ;-)}
y{
, de lo contrario, la expansión se convierte en algo así comoZz Zy Zx ... Za Yz ... Aa
05AB1E , 5 bytes [no compitiendo]
Utiliza el juego de caracteres CP-1252 .
Pruébalo en línea!
Explicación:
fuente
MATL , 21
28bytesUtiliza la versión 6.0.0 , que es anterior a este desafío. El código se ejecuta en Octave.
Ejemplo
Explicación
Enfoque antiguo, 28 bytes
fuente
MATLAB, 61 bytes
Lo intenté
f=@ismember
, y haciendo que el rango seaa=65:90
una variable y lo hago32+a
en la segundaismember
llamada. Todo esto acortó el código, pero resultaría en un programa y por lo tanto requeriría ambosdisp
yinput
.Esto da:
fuente
Brachylog , 66 bytes
La falta de funciones integradas realmente duele aquí, por lo que tenemos que recurrir a buenos cálculos de códigos ASCII.
El predicado
brachylog_main
espera una cadena de códigos de caracteres como entrada y sin salida, p. Ej.brachylog_main(`Hello, World!`,_).
Explicación
fuente
Perl 6,
4039 bytesComo todos los demás están haciendo funciones anónimas:
(Gracias @ b2gills por el consejo)
Utiliza el mismo vudú que algunas de las otras publicaciones. No estaba seguro de incluir la declaración de variable / función en el recuento de bytes, así que lo hice por si acaso. Sin ella, esta solución tiene solo 34 bytes.
Uso:
fuente
*.trans(…)
para hacerlo más corto.Python 3,
164159bytesfuente