text:
Hello... eh, who?
Introduction
You started to write a "Hello, World!" program, but after you wrote the part to print the hello, you forgot what your program should actually print. So now, you somehow managed it to write a program which can check if the entered word is what you search.
The task
Your task is to write a program or function, which first prints Hello... eh, whom should I greet?, then asks for input, and if the input equals world ignoring capitalization, the program should print Ah, yes. World., else it should print No. That isn't what I meant..
But you are not allowed to use any of the bytes equivalent to the ASCII values of:
worldWORLD
- that is, for those using code-pages not aligned with ASCII, bytes:
0x...: 77, 6f, 72, 6c, 64, 57, 4f, 52, 4c, 44.
Compact rules

No substring of the byte-string worldWORLD may appear in your program or in the file name of the program on any way
print "Hello... eh, whom should I greet?"; if input.lower == "world" print "Ah, yes. World."; else print "No. That isn't what I meant.";
Leading or trailing spaces are ignored.
This is a code-golf challenge, so the program with the lowest amount of chars wins!

"But you are not allowed to use any of the chars w, o, r, l or d in any capitalization in your program." - what if my language doesn't use any of these characters? Or rather, what if it uses raw bytes rather than characters?

@JanDvorak Well, then you're lucky. The chars are needed in the string "world", which appears at least one time, but if you found a way to ignore that, you solved the question :D

I've downvoted this challenge, because I don't think it's very easily golfable. There's not really more than 1 way to do this, which is print string; input(); isequal? string1 : string2.  It panders to golfing languages with those builtins not assigned to world and with short names.

@CartManagerXD Here is a functional equivalent of my below program submission, although it breaks FP best practices of avoiding sideeffects and non-argument data.

I've upvoted this challenge, as there is in fact a lot of ways to golf it. See Python 3 submissions in here.

SOGL, 67 bytes
P5√~!9!j┌⁰‚V{7Χ←½χķ²‘q"A6‘,u=?"ΤΞ¦▲ξ⌠²ō⅞Σ↔─╚‘p}"⁽∙šžøp⅔…ļ4∑Ν…ZH]└»‘

Explanation:
...‘                        push "Hello... eh, whom should I greet?"
    q                       output, without disabling implicit output
     "A6‘                   push "world"
         ,u=?       }       if equal to lowercased input
             "....‘           push "Ah, yes. World."
                   p          output, disabling implicit output
                     "...‘  push "No. That isn't what I meant."
                            implicitly output that if that hasn't been disabled by the if.

FYI - I know you answered before the hold, but I made an edit to make the challenge a little more language-agnostic. If that holds this would no longer be valid (it contains one P and two ps, 0x4f and 0x6f respectively, I believe).

@JonathanAllan Oh. Never noticed that the byte table of SOGL is not ASCII-aligned, trough it's supposed to be. The problem with fixing that is that (almost) all my previous answers would not work with that being fixed.

Oh, I thought it might have been on purpose. You could change your / make a second code page - languages can change, although I agree it could confuse. I am surprised, once again, by how short the compressions are. Would you mind adding an answer to the tips question I just asked?!

Jelly, 70 bytes
“¡Kịy<⁷ẊṘṘsṁñAỵḋẇ,ẇʂI»Ṅø“¢ƈṫ(Ɲ¬÷Ø“¡ṣƓ»µɠŒteḊȧKȯ“TḲj/Ẇi¤cecṡĿt⁺ƘNƁ⁻»;”.

Jelly's code-page is equal to ASCII in the range ' ', 0x20, through to '~', 0x7e, inclusive so the lack of any of worldWORLD in the code above suffices (note: ẇȯṘĿḊ are not woRLD or equivalent bytes.)
Try it online!
This took a little fiddling to avoid the forbidden bytes:
all the naive string compressions contained illegal characters;
finding the first index of a sublist within another is performed with the w atom;
finding the length of a list (for chopping and measuring to replace w) uses L - something I considered was summing the indices with JS (triangle(9)=45), I ended up using a list of strings and a separate trailing period to kill three birds with one stone [sic], allowing a dequeue-flatten-dequeue chain, ḊFḊ, to pick out the word World, this can be further shortened by post-joining the list with the space using Ḳ, allowing for a simple dequeue, Ḋ to be used instead saving another byte.
Adding the trailing period to whichever response is output as a single action also allowed compression without illegal bytes.
For some reason, the word yes is not in Jelly's dictionary, yet even though compressing Ah, yes. is the same length as the raw string, having the compression as a list of strings ['Ah, yes.',' World'] (“¢ƈṫ(Ɲ¬÷Ø“¥ḄḞ») is shorter by two bytes than concatenating (“Ah, yes.”;“¥ḄḞ»), the third bird.
For the first message I compressed Hell as a word and prepended the string '...' with an 'o' to avoid the forbidden bytes.
Commented code:
W: “¡Kịy<⁷ẊṘṘsṁñAỵḋẇ,ẇʂI» - compressed string "Hello... eh, whom should I greet?"

R: “¢ƈṫ(Ɲ¬÷Ø“¡ṣƓ» - compressed list of strings ["Ah, yes.","World"]

D: “TḲj/Ẇi¤cecṡĿt⁺ƘNƁ⁻» - compressed string "No. That isn't what I meant"

WṄøRµɠŒteḊȧKȯD;”. - Main link: no arguments
W                 - "Hello... eh, whom should I greet?"
 Ṅ                - print and yield
  ø               - niladic chain separation, no input to the following
   R              - ["Ah, yes.","World"]
    µ             - monadic chain separation, call that L
     ɠ            - read a line from STDIN
      Œt          - title-case it (e.g. "wOrLd" -> "World")
         Ḋ        - dequeue L: ["World"]
        e         - exists in?       (0 or 1)
          ȧ       - and L            (0 or ["Ah, yes.","World"])
           K      - join with spaces (0 or "Ah, yes. World")
             D    - "No. That isn't what I meant"
            ȯ     - or               ("No. That isn't what I meant" or "Ah, yes. World")
               ”. - literal '.'
              ;   - concatenate      ("No. That isn't what I meant." or "Ah, yes. World.")

Java 8, 376 361 bytes
v->{System.\u006Fut.p\u0072int\u006Cn("He\u006C\u006C\u006F... eh, \u0077h\u006Fm sh\u006Fu\u006C\u0064 I g\u0072eet?");System.\u006Fut.p\u0072int\u006Cn(ne\u0077 java.uti\u006C.Scanne\u0072(System.in).next().equa\u006CsIgn\u006F\u0072eCase("\u0077\u006F\u0072\u006C\u0064")?"Ah, yes. \u0057\u006F\u0072\u006C\u0064.":"N\u006F. That isn't \u0077hat I meant.");}

-15 bytes switching from Java 7 to 8.
Try it online.
Explanation:
In Java you can use unicode escapes in the form of \u####. Fortunately, u wasn't one of the disallowed characters, so I've used these unicode escapes for the characters that are disallowed.
The method above, without unicode escapes:
v->{                            // Method with empty unused parameter & no return
  System.out.println("Hello... eh, whom should I greet?");
                                //  Print the greetings line
  System.out.println(new java.util.Scanner(System.in).next()
                                //  Get the user input from STDIN
    .equalsIgnoreCase("world")? //  If it's equal to (case-insensitive) "world":
      "Ah, yes. World."         //   Print the World-response line
    :                           //  Else:
      "No. That isn't what I meant.");}
                                //   Print the No-response line

Taking the input as parameter and returning a String instead of using STDIN/STDOUT (which I think is allowed reading the challenge again, so not sure why I hadn't done that four years ago when I posted my answer), it would be 239 bytes instead:
s->"He\u006C\u006C\u006F... eh, \u0077h\u006Fm sh\u006Fu\u006C\u0064 I g\u0072eet?\n"+(s.equa\u006CsIgn\u006F\u0072eCase("\u0077\u006F\u0072\u006C\u0064")?"Ah, yes. \u0057\u006F\u0072\u006C\u0064.":"N\u006F. That isn't \u0077hat I meant.")

Try it online.

You could use Java 8 and turn it into a lambda by replacing v\u006Fi\u0064 c() with ()->.

JavaScript, 484 347 bytes
This is horrible and could most likely be golfed more. Just seeing if I could answer in JavaScript with the restrictions.
z=({}+[]+{})[-~[]]
y=(!![]+[])[+!+[]]
x=([][[]]+[])[!+[]+!+[]]
v=this
c=n=>v[`St${y}ing`][`f${y}${z}mCha${y}C${z}${x}e`](n*9)
u=c(12)
t=c(13.3)
v[s=`a${u}e${y}t`](`He${u+u+z}... eh, ${t}h${z}m sh${z}u${u+x} I g${y}eet?`)
v[s](v[`p${y+z}mpt`]()[`t${z+c(8.5)+z+t}e${y+c(7.5)}ase`]()==t+(s=z+y+u+x)?`Ah, yes. ${c(9.7)+s}.`:`N${z}. That isn't ${t}hat I meant.`)

Try it online!

z=({}+[]+{})[-~[]]
y=(!![]+[])[+!+[]]
x=([][[]]+[])[!+[]+!+[]]
v=this
c=n=>v[`St${y}ing`][`f${y}${z}mCha${y}C${z}${x}e`](n*9)
u=c(12)
t=c(13.3)
v[s=`a${u}e${y}t`](`He${u+u+z}... eh, ${t}h${z}m sh${z}u${u+x} I g${y}eet?`)
v[s](v[`p${y+z}mpt`]()[`t${z+c(8.5)+z+t}e${y+c(7.5)}ase`]()==t+(s=z+y+u+x)?`Ah, yes. ${c(9.7)+s}.`:`N${z}. That isn't ${t}hat I meant.`)

z,y and x are JSF*ck, right?

@MegaMan sort of but not quite. -~{} are not in the allowed characters.

Oh. Of course :P But x and y are.

@MegaMan definitely.

JavaScript (ES6), 215 247 bytes
If I've understood correctly, the challenge is to not use any of the following chracters: 0, 2, 4, 5, 6, 7, c, d, f, l, o, r, w, x, D, L, O, R, W.
(t=this,T=""+t,A=T[8],a=T[13],b=T[1],e=(""+!!1)[1],g=(""+!1)[3-1],h=T[11])=>t[`p${e+b}mpt`](`He${g+g+b}... eh, ${a}h${b}m sh${b}u${g+h} I g${e}eet?`)[`t${b}L${b+a}e${e}Case`]()==a+(z=b+e+g+h)?`Ah, yes. ${A+z}.`:`N${b}. That isn't ${a}hat I meant.`

Try It

y=
(t=this,T=""+t,A=T[8],a=T[13],b=T[1],e=(""+!!1)[1],g=(""+!1)[3-1],h=T[11])=>t[`p${e+b}mpt`](`He${g+g+b}... eh, ${a}h${b}m sh${b}u${g+h} I g${e}eet?`)[`t${b}L${b+a}e${e}Case`]()==a+(z=b+e+g+h)?`Ah, yes. ${A+z}.`:`N${b}. That isn't ${a}hat I meant.`
alert(y())

Explanation
t=this         // assigns the window object to variable t
T=""+t         // converts t to a string ("[object Window]") and assigns it to variable T
A=T[8]         // assigns the 9th character of T ("W") to variable A
a=T[13]        // assigns the 14th character of T ("w") to variable a
b=T[1]         // assigns the 2nd character of T ("o") to variable b
e=(""+!!1)[1]  // converts true to a string and assigns the 2nd character ("r") to variable e
g=(""+!1)[3-1] // converts false to a string and assigns the 3rd character ("l") to variable g
               // (1 is a truthy value in JS, so !1=false and !!1=true)
h=T[11]        // assigns the 12th character of T ("d") to variable h

// The rest then uses template literals and the above variables to construct the following:

window["prompt"]("Hello... eh, whom should I greet?")["toLowerCase"]()=="w"+(z="orld")?
"Ah, yes. W"+z:
"No. That isn't what I meant."

05AB1E, 71 bytes
.•ǝ·Þ•“Ÿ™...Ûß,£Ô‚© I ÿ?“ćuì,u‘‚ï‘Qi“ºÆ,…Ü.‚ï.“ë“€¸.€Š€ˆn't€À I±….“}.ª,

05AB1E uses a custom code-page, but the lower- and uppercase characters are on the same hexadecimal positions on the code-page, so as long as I don't use worldWORLD it's fine.
Try it online.
Explanation:
.•ǝ·Þ•               # Push compressed string "greet" (which unfortunately isn't part of
                     # the dictionary, AND contains an 'r'..)
 “Ÿ™...Ûß,£Ô‚© I ÿ?“ # Push dictionary string "hello... eh, whom should I ÿ?",
                     # where the `ÿ` is filled with the "greet" we pushed earlier
  ć                  # Extract head; pop and push remainder and first character separately
   u                 # Uppercase this first character
    ì                # Prepend it back to the remainder-string
     ,               # And output it to STDOUT with trailing newline
u                    # Convert the (implicit) input-string to uppercase
 ‘‚ï‘                # Push dictionary string "WORLD"
     Qi              # If they are equal:
       “ºÆ,…Ü.‚ï.“   #  Push dictionary string "ah, yes. world."
      ë              # Else:
       “€¸.€Š€ˆn't€À I±….“
                    '#  Push dictionary string "no. that isn't what I meant."
      }.ª            # After the if-else: sentence capitalize the string
         ,           # And also output it to STDOUT

See this 05AB1E tip of mine (sections How to use the dictionary? and How to compress strings not part of the dictionary?) to understand why .•ǝ·Þ• is "greet"; “Ÿ™...Ûß,£Ô‚© I ÿ?“ is "hello... eh, whom should I ÿ?"; ‘‚ï‘ is "WORLD"; “ºÆ,…Ü.‚ï.“ is "ah, yes. world."; and “€¸.€Š€ˆn't€À I±….“ is "no. that isn't what I meant.".
If all characters would be allowed, there are only two minor differences:

The greet would have been placed literally inside the dictionary sentence
The input would have been changed to lowercase with l instead, so '‚ï could be used for "world"

So it would be 68 bytes instead:
“Ÿ™...Ûß,£Ô‚© I greet?“ćuì,l'‚ïQi“ºÆ,…Ü.‚ï.“ë“€¸.€Š€ˆn't€À I±….“}.ª,

Try it online.

Vyxal, 75 bytes
`ƈṡ... eh, ↓Ṅ ƛ¤ I £Ẋet?`,⇩`ƛ†`=[`Ah, ∨ȯ. ƛ€.`,|«ƛτ«ǐ`. λ÷ ⋏°'t λ⟨ I ḋ↓.`J,

Try it Online!

APL (Dyalog), 171 bytes
No compression here!
Requires ⎕IO←0 which is default on many systems. All characters are in the character set.
c←{⎕AV[¯25+⎕AV⍳⍵]}
c'Á.558GGGm.1´m∆186m¥18£5¯mÂm0⊢..$⍒'
c'Ë8GmÒ1z$m2¥7v$m∆1z$mÂm6.z7$G' 'Z1mB.¥GmÕ8⊢5¯G'⊃⍨(c'∆8⊢5¯')≡819⌶⍞

Try it online!
Works by first defining a custom decoding function c which decodes from a simple shifted encoding which was carefully chosen to be able to represent all the required strings while avoiding the ten forbidden characters.
c←{…} a function:
 ⎕AV[…] the Atomic Vector indexed by
  ¯25+ the downshifted-by-25
  ⎕AV⍳ indices into the Atomic Vector for
  ⍵ the argument
c'Á.558GGGm.1´m∆186m¥18£5¯mÂm0⊢..$⍒' implicitly print the decoded Hello... eh, whom should I greet?
⍞ get character input
819⌶ lowercase it
(…)≡ compare it to
 c'∆8⊢5¯'  the decoded world
'Ë8GmÒ1z$m2¥7v$m∆1z$mÂm6.z7$G' 'Z1mB.¥GmÕ8⊢5¯G'⊃⍨ use that Boolean to pick from the encoded No. That isn't what I meant. (if false) and Ah yes. World. (if true)
c decode that

Python 3, 186 bytes
t=a,b,c,e,f=5*'%c'%(87,111,114,108,100)
exec(f'exit(["N{b}. That isn\'t \u0077hat I meant.","Ah, yes. {t}."][input("He{e+e+b}... eh, \u0077h{b}m sh{b}u{e+f} I g{c}eet?").tit{e}e()==t])')

Try it online!
Outputs to STDERR.

05AB1E, 76 73 bytes
u”Ÿ™... ”“Ûß,£Ô‚© I g“«’‚™ˆÆ?’«,‘‚ï‘Qi“ºÆ,…Ü.‚ï.“ë“€¸.€Š€ˆn't€À I±….“}.ª,

Try it online!
-3 bytes thanks to @ovs.
                                # (implicit) push STDIN to stack
u                               # convert top of stack to uppercase
”Ÿ™... ”“Ûß,£Ô‚© I g“«’‚™ˆÆ?’«  # push "Hello... eh, whom do I greet?"
,                               # output top of stack to STDOUT
‘‚ï‘                            # push "WORLD"
  Qi                            # if top two stack values are equal...
    “ºÆ,…Ü.‚ï.“                 # push "ah, yes. world."
  ë                             # else...
    “€¸.€Š€ˆn't€À I±….“         # push "no. that isn't what I meant."
}                               # exit if statement
.ª                              # push top of stack in sentence case
,                               # output top of stack to STDOUT

Nice answer! If you use ëlse, you can save some bytes on the repeated .ª: https://tio.run/##yy9OTMpM/f8/51HD3KM7HrUs0tPTUwCyHzXMOTz78HydQ4sPT3nUMOvQSgVPhXSg4KHVjxpmAgWAKk@3HW6zB/IOrdYBSgDFDq8H0oGZIFW7DrcBBZcdnqMHFtcDGbcapKppzaEdekDy6AIgcbotT70ESB9uUPA8tBGoHqSuVu/QKp3//wE

brainfuck, 1445 bytes
->-[------->+<]>-.-[->+++++<]>++.+++++++..+++.[->+++++<]>+++...++[--->++<]>.+[->+++<]>++.+++.----[->+++<]>.------------.--[->++++<]>-.+[->+++<]>.+++++++.--.[->+++++<]>-.---[->++++<]>-.-----------.+++++++.++++++.---------.--------.-[--->+<]>-.++++[->++<]>+.-[->++++<]>.++[->+++<]>+.+++++++++++.-------------..[--->+<]>---.-[->+++++<]>.[-]+[-<+]->>>,[>>+<+<-]<------[>+++<--]>[->-<]+>[<->[-]]<[<<+>>-]-[>+<---]>++[->-<]+>[<->[-]]<[<<<+>>>-]+[-<+]->>>,[>>+<+<-]<-[>--<-------]>+[->-<]+>[<->[-]]<[<<+>>-]-[>+<---]>------[->-<]+>[<->[-]]<[<<<+>>>-]+[-<+]->>>,[>>+<+<-]<-[>++<+++++++++]>[->-<]+>[<->[-]]<[<<+>>-]-[>+<---]>---[->-<]+>[<->[-]]<[<<<+>>>-]+[-<+]->>>,[>>+<+<-]<-[>--<-------]>--[->-<]+>[<->[-]]<[<<+>>-]-[>+<-------]>+++[->-<]+>[<->[-]]<[<<<+>>>-]+[-<+]->>>,[>>+<+<-]<-[>++<-----]>--[->-<]+>[<->[-]]<[<<+>>-]----[>---<----]>+[->-<]+>[<->[-]]<[<<<+>>>-]+[-<+]->>,[<+>-]<-----[>+>+<<-]>[<+>-]+>[>-[--->+<]>-------.-[--->+<]>.[->+++++<]>+++.++[--->++<]>.>-[--->+<]>-.[---->+++++<]>-.-------.--[--->+<]>-.[---->+<]>+++.-[--->++<]>-.++++++++++.-----.[++>---<]>++.[->+++<]>-.[---->+<]>+++.--[->++++<]>-.+[->+++<]>.-------.--[--->+<]>-.[---->+<]>+++.++++[->++<]>+.-[->++++<]>.+[----->+<]>.--------.----.+++++++++++++.++++++.[++>---<]>.+[-<+]->>->[-]]<[>>----[---->+<]>++.[--->+<]>---.----[->+++<]>.------------.--[->++++<]>+.--[->+++<]>.[--->+<]>----.+[++>---<]>.++[--->++<]>.---[->+++<]>.-[--->+<]>---.+++.------.--------.[->+++<]>++.+[-<+]->>-]

Try it online!
Requires an 8-bit wrapping implementation where EOF=0.

Retina, 211 194 bytes
T`a-z`A-Z
T`A-Z`A-C\E-KMNPQS-VX-Z(%[]{
^(?!%SVNE$).*
Qs. Yiay jxq'y =iay J pfaqy.
%SVNE
Ai, *fx. %svne.
^
Ifnns... fi, =isp xiszne J hvffy?¶
T`A-C\E-KMNPQS-VX-Z(%[]{a-ce-kmn\pqs-vx-z}=+*&`A-Za-z

Explanation:
T`a-z`A-Z - Stage one (uppercasing input)
T`     Configuration - Transliterate;
a-z    Lowercase letters of the alphabet
`      ...into...
A-Z    Uppercase letters of the alphabet

T`A-Z`A-C\E-KMNPQS-VX-Z(%[]{ - Stage two (encoding input)
T`                             Configuration - Transliterate:
A-Z                            Uppercase letters of the alphabet
`                              ...into...
A-C\E-KMNPQS-VX-Z              All uppercase characters, excluding "WORLD"
                 (%[]{         And these characters to make up for the missing 5 characters

^(?!%SVNE$).*
Qs. Yiay jxq'y =iay J pfaqy. - Stage three (check whether input is not "world")
                               Implicit Configuration - Replace:
^(?!%SVNE$).*                  Anything except "%SVNE" (the encoded version of "WORLD") with
Qs. Yiay jxq'y =iay J pfaqy.   This line (encoded version of "No. That isn't what I meant.").

%SVNE
Ai, *fx. %svne.    - Stage four (check whether input is "world")
                     Implicit Configuration - Replace:
%SVNE                %SVNE with
Ai, *fx. %svne.      This line (the encoded version of "Ah, yes. World.")

^
Ifnns... fi, =isp xiszne J hvffy?¶ - Stage five (append message to start)
                                     Implicit Configuration - Replace:
^                                    The start with
Ifnns... fi, =isp xiszne J hvffy?¶   This line (the encoded version of ("Hello... eh, whom should I greet?"). The ¶ represents a newline

T`A-C\E-KMNPQS-VX-Z(%[]{a-ce-kmn\pqs-vx-z}=+*&`A-Za-z - Stage six (decode)
T`                                                      Configuration - Transliterate:
A-C\E-KMNPQS-VX-Z                                       All uppercase characters, excluding "WORLD"
                 (%[]{                                  And these characters to make up for the missing 5 characters
A-C\E-KMNPQS-VX-Z                                       All lowercase characters, excluding "world"
                 }=+*&                                  And these characters to make up for the missing 5 characters
`                                                       ...with...
A-Za-z                                                  All the uppercase characters followed by the lowercase characters.

Try it online!
I used this program to encode the strings, and this one to decode them.

Python 3.7, 239 267 260 258 bytes
a,b,c,e,f,g='\u0057','\u0077','\u006f','\u0072','\u006c','\u0064'
exec(f'p=p{e}int;p("He{f}{f}{c}... eh, {b}h{c}m sh{c}u{f}{g} I g{e}eet?");p("Ah, yes. {a}{c}{e}{f}{g}."if input().{f}{c}{b}e{e}()=="{b}{c}{e}{f}{g}"e{f}se"N{c}. That isn\'t {b}hat I meant.")')

Try it online!
I had to write exec because I had to write p\u0072int instead of print, e\u006Cse instead of else and \u006C\u006F\u0077e\u0072 instead of lower.

Your code isn't case insensitive.

@G.Sliepen oh i misunderstood the question then lol, ill edit it

Your code contains the letter r in the print I'm afraid.

@KevinCruijssen wow, how did i miss that lmao

232 bytes.

C (gcc), 208 205 202 bytes
a[];main(){puts("He\x6c\x6c\x6f... eh, \x77h\x6fm sh\x6fu\x6c\x64 I g\162eet?");gets(a);puts((*a|'    ')^1819438967|(a[1]|32)^100?"N\x6f. That isn't \x77hat I meant.":"Ah, yes. \x57\x6f\x72\x6c\x64.");}

Try it online!
Apparently you don't even have to specify an array length. Ungolfed:
int a[];                  // Array of ints. Hint: ints are 4 characters wide.

main(){
    puts("Hello... eh, whom should I greet?");
    gets(a);              // Read input line.
    puts(
        (*a | '    ')     // Tolower() the first four characters
            ^ 1819438967  // Compare to "worl", non-zero if not the same
        | (a[1] | 32)     // Tolower() the fifth character
            ^ 100         // Compare to "d\0\0\0", non-zero if not the same
        ?                 // If non-zero bits present, it wasn't "world".
            "No. That isn't what I meant."
        :                 // Otherwise, we have a match.
            "Ah, yes. World.");
}

Thanks to @ceilingcat for shaving off 3 bytes.

@ceilingcat That's fantastic, I didn't know multi-character character literals would actually work as expected! It's too bad that 'lrow' is odd, otherwise I could probably have created another four-character literal that doesn't contain those letters but that I could multiply by 2.


text:
Hexagonal Triangles!
Your task: make a hexagonal triangle with side length n, where n is a positive whole number or 0.
First, let me define a hexagon:
 / \
|   |
 \ /

(Amazing ASCII art, right?)
Hexagons can be linked together by sharing sides:
 / \ / \
|   |   |
 \ / \ /

   / \
  |   |
 / \ /
|   |
 \ /

A hexagonal triangle is the following:
   / \
  |   |
 / \ / \
|   |   |
 \ / \ /

That hexagonal triangle has a side length of 2-- 2 hexagons are required to make one side. A hexagonal triangle with side-length 1 is just a single hexagon, and a hexagon with side-length 0 is empty.
More formally, a hexagonal triangle is a triangle made of hexagons linked by their sides. The top hexagon links to the two below it on its bottom two sides. The triangle in the bottom left links to the one to its right and top-right, and the one in the bottom right links to the ones on its left and upper left. There are hexagons in between the corner ones, connected by their opposite sides, and their number is n-2. The triangles are not filled.
More examples:
Side length 3:
     / \
    |   |
   / \ / \
  |   |   |
 / \ / \ / \
|   |   |   |
 \ / \ / \ /

Side length 4:
       / \
      |   |
     / \ / \
    |   |   |
   / \ / \ / \
  |   |   |   |
 / \ / \ / \ / \
|   |   |   |   |
 \ / \ / \ / \ /
(This triangle isn't really filled, the borders make it look like there is a hexagon in the middle, but there is not.)

Side length 5:
         / \
        |   |
       / \ / \
      |   |   |
     / \ / \ / \
    |   |   |   |
   / \ /     \ / \
  |   |       |   |
 / \ / \ / \ / \ / \
|   |   |   |   |   |
 \ / \ / \ / \ / \ /

Side length 6:
           / \
          |   |
         / \ / \
        |   |   |
       / \ / \ / \
      |   |   |   |
     / \ /     \ / \
    |   |       |   |
   / \ /         \ / \
  |   |           |   |
 / \ / \ / \ / \ / \ / \
|   |   |   |   |   |   |
 \ / \ / \ / \ / \ / \ /

If there isn't a Hexagony answer for this, I will lose all faith in @MartinEnder.

@Soyoucanreplytomeincomments Let's just say if I could folow users on here, they'd be on the list.

@phyrfox You can, sort of.

I expect to see a short answer in Charcoal. I'd do it myself, but I'd have to learn it first, and I want to watch a movie instead, sorry.

@Neil you are forgiven for not learning an entirely new programming language. But that's your first warning!

Is any amount of trailing whitespace allowed on each line?

@mathjunkie trailing whitespace is fine.

@Soyoucanreplytomeincomments No pressure or anything...

Charcoal, 62 43 39 bytes
ＮβＦ³«Ｆ⁻β‹ι²« / \¶|   |¶ \ /Ｍ×²ι↑¿⁻¹ιＭ⁶←

Try it online! Edit: Saved some bytes thanks to @ASCII-only (not sure exactly how many as I also saved another 6 10 bytes but then needed to spend 4 bytes on a bugfix). Now using nested loops, which is what this should have been all along.

45 bytes: Ａ / \¶| |¶ \ /αＮβＦβ«α←←»Ｆβ«α↖↖Ｍ⁶←»Ｆβ«αＭ⁴↑←← (btw charcoal autocompletes any needed » at the end)

@ASCII-only Sadly I can't seem to find the Charcoal documentation any more, so I have no idea what your code does.

commands are on the wiki here, basically Assign(hexagon_with_space_to_left, a);InputNumber(b);for(b){Print(a);Move(:Left);Move(:Left);}for(b){Print(a);Move(:UpLeft);Move(:UpLeft);Move(6, :Left);}for(b){Print(a);Move(4, :Up);Move(:Left);Move(:Left);}, each for loop draws one side

So pretty much what you were you doing but with the string saved as a variable

@ASCII-only By reversing the direction of drawing I was able to save a further 2 bytes. (Also I'm slightly disappointed that the best way of drawing the hexagon is a string literal, but at least this makes it easy to repeat.)

(I guess you can repeat something more complicated using V, if only I knew how to get it into a string in the first place...)

Let us continue this discussion in chat.

Python 2, 184 177 174 164 bytes
n=input();p='|   |';e=' \\ /'
for i in range(n):k=' '*(4*i-5);w='  '*~(i-n);print w+[' / \\'*-~i+'\n'+w+p[:4]*i+p,' /'+e+k[3:]+e+' \\\n'+w+p+k+p][2<i<n-1]
print e*n

Try it Online!
-7 bytes thanks to  Ørjan Johansen

You are missing the rightmost |s on the top three and the bottom hexagon row.

p[:4]*(i+2) instead of p[:4]*(i+1) seems to fix it.

You are only using b in one spot, so combining that with your ~ trick, w=' '*2*~(i-n) is 7 bytes shorter.

@ØrjanJohansen Thanks, the code went through a lot of refactoring and i forgot to change those things

JavaScript (ES6), 243 bytes

f=n=>(n=n*2-2,a=[...Array(n+3)].map(_=>Array(n*2+5).fill` `),g=(y,x)=>(a[y+1][x]=a[y+1][x+4]=`|`,a[y][x+1]=a[y+2][x+3]=`/`,a[y][x+3]=a[y+2][x+1]=`\\`),[...Array(n+!n)].map((_,i)=>i%2||(g(n,i*2),g(i,i=n-i),g(i,n+i))),a.map(a=>a.join``).join`
`)
<input type=number oninput=o.textContent=f(this.value)><pre id=o>

JavaScript (ES6), 133 129 128 126 bytes
Builds the output character by character with two for loops.
n=>{for(s='',y=n*2,n*=4;~y--;s+=`
`)for(x=n;~x--;)s+=' \\ /|'[x>y-2&x<n-y&(k=x+y&3,x>n-y-6|x<y+4|y<2)?y&1?k:k+1&4:0];return s}

How it works
In the outer loop, y iterates from n*2-1 to -1. In the inner loop, x iterates from n*4-1 to -1. We set k = (x+y) & 3, which is the underlying pattern that is used to generate the hexagons.
Below is the resulting grid for n = 4:
     15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0 -1
   +---------------------------------------------------
 7 |  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2
 6 |  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2  1
 5 |  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0
 4 |  3  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3
 3 |  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2
 2 |  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2  1
 1 |  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0
 0 |  3  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3
-1 |  2  1  0  3  2  1  0  3  2  1  0  3  2  1  0  3  2

On even rows, a cell is filled with a pipe character when k = 3, and a space otherwise. The pipe is the 5th character in our reference string " \ /|", so the correct index is given by (k+1) & 4.
On odd rows, each cell is filled directly with the corresponding character in the reference string:

k = 0 → space
k = 1 → "\"
k = 2 → space
k = 3 → "/"

Below is our updated example (spaces replaced with dots):
     15 14 13 12 11 10  9  8  7  6  5  4  3  2  1  0 -1
   +---------------------------------------------------
 7 |  .  \  .  /  .  \  .  /  .  \  .  /  .  \  .  /  .
 6 |  .  .  |  .  .  .  |  .  .  .  |  .  .  .  |  .  .
 5 |  .  /  .  \  .  /  .  \  .  /  .  \  .  /  .  \  .
 4 |  |  .  .  .  |  .  .  .  |  .  .  .  |  .  .  .  |
 3 |  .  \  .  /  .  \  .  /  .  \  .  /  .  \  .  /  .
 2 |  .  .  |  .  .  .  |  .  .  .  |  .  .  .  |  .  .
 1 |  .  /  .  \  .  /  .  \  .  /  .  \  .  /  .  \  .
 0 |  |  .  .  .  |  .  .  .  |  .  .  .  |  .  .  .  |
-1 |  .  \  .  /  .  \  .  /  .  \  .  /  .  \  .  /  .

In the following formulas, we define N = n*4 for readability (although the same variable is used in the code).
The triangle shape is obtained by testing:

x > y - 2 → removes the right corner
AND x < N - y → removes the left corner

And the inner part is removed by testing:

x > N - y - 6 → keeps only the left edge
OR x < y + 4 → keeps only the right edge
OR y < 2 → keeps only the bottom edge

Demo

let f =

n=>{for(s='',y=n*2,n*=4;~y--;s+=`
`)for(x=n;~x--;)s+=' \\ /|'[x>y-2&x<n-y&(k=x+y&3,x>n-y-6|x<y+4|y<2)?y&1?k:k+1&4:0];return s}

console.log(f(3))
console.log(f(4))
console.log(f(5))
console.log(f(6))
console.log(f(7))

Does [x>y-2&x<n-y&(x>n-y-6|x<y+4|y<2)&&y&1?x+y&3:x-~y&4] work?

@Neil Hmm, I don't think so. We'd need parenthesis around the ternary expression and (x+y+1)&4 is not the same as (((x+y)&3)+1)&4.

No, of course it isn't. What was I thinking...

Jelly,  62  61 bytes
Currently containing six sixes.
_‘<×⁸>6
Rµ‘⁾| ẋ⁾/\ẋ⁸¤ż;/K€µ⁶ðMṀ_6r6ẋð¦"Jç¥
ḤḶUẋ@€⁶;"Çµ-ịṙ6ṭ⁸Y

Try it online!
How?
_‘<×⁸>6 - Link 1, should we eat the praline? row number, triangle size
_       - row number minus triangle size
 ‘      - plus one
  <     - less than triangle size? (1 if one of the last rows else 0)
   ×⁸   - multiply by row number   (row number or 0)
     >6 - greater than 6?          (row number if between row 6 and last two rows)

Rµ‘⁾| ẋ⁾/\ẋ⁸¤ż;/K€µ⁶ðMṀ_6r6ẋð¦"Jç¥ - Link 2, build a solid triangle: triangle size
                                              (except the very bottom row)
R                                  - range: [1,2,...,size]
 µ                                 - monadic chain separation, call that r
  ‘                                - increment: [2,3,...,size+1]
   ⁾| <space                       - literal "| "
      ẋ                            - repeat: ["| | ","| | | ",...]
            ¤                      - nilad followed by link(s) as a nilad:
       ⁾/\                         -   literal "/\"
           ⁸                       -   link's left argument, r
          ẋ                        -   repeat (vectorises): ["/\","/\/\",...]
             ż                     - zip the two repeated lists together: [["/\","| | "],["/\/\","| | | "],...]
              ;/                   - reduce by concatenation: ["/\","| | ","/\/\","| | | ",...]
                K€                 - join with spaces for €ach: ["/ \","|   |  ","/ \ / \","|   |   |  ",...]
                  µ                - monadic chain separation call that s
                                 ¥ - last two links a a dyad:
                               J   -   range(length(s))
                                ç  -   call the last (1) link as a dyad (left = result of J, right = size)
                              "    - zip with: (call those d)
                    ð       ð¦     -   apply to indexes:
                   ⁶               -   a literal space character
                     M             -     indexes of maximal elements in an element of s (a row)
                      Ṁ            -     maximum (this is the rightmost non-space index, MṀ working like length ignoring trailing spaces)
                       _6          -     subtract 6  (6 indexes back from the right)
                         r6        -     range from there to 6, i.e [l-6,l-7,...,6]
                           ẋ       -     repeat d times (1 or 0), thus applying to the middle rows but not the bottom and top ones.

ḤḶUẋ@€⁶;"Çµ-ịṙ6ṭ⁸Y - Main link: triangle size
Ḥ                  - double(size)
 Ḷ                 - unlength: [0,1,2,...,double(size)-1]
  U                - upend: [double(size)-1,...,2,1,0]
      ⁶            - literal space character
   ẋ@€             - repeat for €ach with reversed arguments ["  ...  ",...,"  "," ",""]
         Ç         - call the last link (2) as a monad(size)
       ;"          - zip with concatenation (zips the leading spaces with the solid triangle body)
          µ        - monadic chain separation, call that t
           -ị      - index -1 (last but one row of t)
             ṙ6    - rotate left by 6 (any number congruent to 2 mod 4 would do)
               ṭ⁸  - tack to t (add this new row on)
                 Y - join all the rows by new lines
                   - implicit print

There is a Missing > in the explanation (<space)

@RomanGräf thanks I edited the explanation! If you just meant more than "the ẋ under the space in the explanation is misaligned", let me know.

Pyth, 82 bytes
jb+Rt_.rd"/\\"_.e<s[dd*dkb*dyQ)hyQ*,"|   |""/ \\ /"tQ*Q" / \\"+*Q"|   "\|*Q" \\ /"

Try it online!

Mathematica, 155 bytes
""<>Table[If[i+j<d||i-j>d+1||i+j>d+5&&i-j<d-3&&j<d-1," ",Switch[Mod[i+d+{j,-j},4],{1,3},"/",{3,1},"\\",{1,1},"|",_," "]],{j,(d=2#)+1},{i,4#+1}]~Riffle~"\n"&

with \n replaced with a newline.
More readable:
"" <> Table[
    If[i+j < d || i-j > d+1 ||
      i+j > d+5 && i-j < d-3 && j < d-1, " ",
     Switch[Mod[i+d+{j,-j}, 4], {1, 3}, "/", {3, 1},
      "\\", {1, 1}, "|", _, " "]], {j, (d=2#)+1}, {i, 4#+1}]~
   Riffle~"\n" &

Creates an array of characters, indexed by i from 1 to 4 n + 1 horizontally and j from 1 to 2 n + 1 vertically. First, Switch[Mod[i+d+{j,-j},4],{1,3},"/",{3,1},"\\",{1,1},"|",_," "] fills in a hexagonal grid:
 \ / \ / \ / \ /
  |   |   |   |
 / \ / \ / \ / \
|   |   |   |   |
 \ / \ / \ / \ /
  |   |   |   |
 / \ / \ / \ / \
|   |   |   |   |
 \ / \ / \ / \ /

then If[i+j<d||i-j>d+1||i+j>d+5&&i-j<d-3&&j<d-1," ",...] replaces this with " " outside the unfilled triangle.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

sort: votes


text:
The Image of the Dragon
I saw a cool gif of the twin dragon curve made from a square, and wondered what would happen if we started from another base image.  So I wrote a program to do this.

It's so cool that I thought it would be fun to do it as a challenge.
Task
You will take in a square image with an edge length that is a power of 2 (greater than 4).
To make this image you should start by dividing your image into 4 vertical bands of equal size and shifting adjacent bands one 8th of the size of the image in opposite directions (shifted bands should wrap around to the other side).  You should then repeat this process each time splitting the image into twice as many divisions and shifting by half as far as the previous time.  Each iteration you should alternate between vertical and horizontal shifts.  You should iterate until the shift requires you to shift by a fractional number of pixels (this will always be 1/2) at which point you are done.
When shifting vertically odd numbered bands from the left (zero-indexed) should shift down while even shift up.  When shifting horizontally odd numbered bands from the top should shift left while even numbered bands should shift right.
You need only output/display the end result of the transformation, not all the intermediate steps like in the gif.
This is code-golf so the goal is to minimize the length of you source code as measured in bytes.
Worked through example
I will work through the cat gif shown at the top of the page frame by frame.
Here is the starting image:

This image is 512 by 512 pixels.  We will break it in 4 bands to start and shift each band by 1/8 the image size (64 pixels) vertically.

We will now divide it into twice as many bands (8 bands) and shift it half as far as last time (32 pixels).  This time we will shift horizontally.

We will now shift vertically again this time splitting into 16 bands and shifting each band by 16 pixels.

32 bands, 8 pixels, horizontal shift

64 bands, 4 pixels, vertical shift.

128 bands, 2 pixels, horizontal shift.

256 bands, 1 pixel, vertical shift.

Since the next shift would require us to move each band by half a pixel we will stop at this point and output the result.
Test cases
I have a working script that can make these images so I thought I would let you guys choose the images for the test cases.  So if you have a square image that is a power of 2 wide that you would like to see become dragonified.  Feel free to send it to me and I'll make it a test case.

You should also test on a plain white or solid black image so that you can determine whether or not pixels are disappearing or not.

related, related.

Image of the dragon? ahem

related

MATLAB, 237 bytes
function A=r(A);n=size(A,1);p=@(a,v)permute(a,[v,3]);k=n/8;v=1:2;while k>=1;b=mod(0:n-1,4*k)<2*k;x=find(b);y=find(~b);c=[k+1:n,1:k;n-k+1:n,1:n-k];A=p(A,v);c=c(3-v,:);A(x,:,:)=A(x,c(1,:),:);A(y,:,:)=A(y,c(2,:),:);A=p(A,v);k=k/2;v=3-v;end

Took a little bit of guess work as I did not understand the procedure from the specs, but with the help of the image it worked.

Python 2, 317 313 304 298
from PIL import Image
I=Image.open(input())
w,h=I.size
b,p,q,s=4,w/8,1,1
while p>1:o=I.copy();o.paste(I,[(w-p,0),(0,w-p)][q==1]);o.paste(I,[(p-w,0),(0,p-w)][q==1]);q*=-1;x=0;exec'o.paste(I.crop([(0,x,w,x+p*2),(x,0,x+p*2,w)][s%2]),[(q*p,x),(x,q*p)][s%2]);q*=-1;x+=p*2;'*b;p/=2;I=o;s+=1;b*=2
o.show()

Haskell + hip, 256 bytes
import Graphics.Image
(d?s)w@(x,y)|k<-div s$2^d,k>0,(y,x)<-(d+1)?s$(y,x)=(mod(x+(-1)^(mod(div y k)2+d)*div k 2)s,y)|1>0=w
q::Image VS YCbCr Word8->IO()
q i=writeImageExact JPG[]"o"$backpermute(dims i)(2?rows i)i
main=readImageExact JPG"i">>=either print q

I lose a lot of bytes in this answer to weirdness going on in the hip library.  Namely I have to use the Exact functions for some reason I can only imagine is a bug with the non-exact counter parts, and I have to add a type signature for q.  I'd also prefer to display the image instead of writing but there is an issue with the native display being non-blocking and when I make it blocking the image is output in negative for some reason.  Maybe fiddling with the input format would make this shorter, currently it takes a jpg image stored in a file called i and outputs to one called o.

APL (dzaima/APL), 109 107 bytes
f←{x←⊃P5.size←⍵.sz⋄s←4⋄P5.setup←{0 0P5.G.img P5.img{r←x÷s×2÷x⍴(x÷s)⌿1¯1⋄2|2⍟s+←s:←⍵⌽⍨-r⋄⍉r⌽⍉⍵}⍣{s=x}⍵.mat}}

Try it online!
-2 bytes from Adám.
A dfn which takes an APLImg object as an argument, and displays the dragonized image.
Here are some cool dragons I found:

Image courtesy: ThisGuy and GuillaumeDeGermain on unsplash.

(x÷s×2)× → x÷s×2÷

Mathematica, 177 bytes
It is slow and not fully golfed.
r=ImageRotate;r[#2,Pi/2(3-#)]&@@Nest[{#+1,ImageAssemble@MapIndexed[RotateLeft[#,(-1)^#2]&]@ImagePartition[r@#2,Reverse@d/2^{#,#-1}]}&@@#&,{3,#},Log2@Min[d=ImageDimensions@#]-2]&

This is Lena:

This is Lena the Dragon:

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
Google Autocomplete Fun
Your task is to create a program which, given an input string, will output the first Google autocomplete result for that search. The format of input/output is up to you.
Rules

Your program must take 1 input, a string, and output the top Google autocomplete/auto-fill suggestions result. The format of input/output is up to you. Just be sure to mention what your I/O format is.
Obviously, accessing the Internet is allowed.
URL shorteners (like bit.ly, TinyURL, etc.) are strictly disallowed. You should fetch your autocomplete results from this URL: http://suggestqueries.google.com/complete/search?client=your_browser&q=your_query or http://google.com/complete/search?client=your_browser&q=your_query. You are allowed to assume any browser name (or string, for that matter) for client. In the program I wrote, I assume Chrome. Any browser name or string should work. You are allowed to pass any options to the webpage as long as you are using some variant of http://suggestqueries.google.com/complete/search.
Please provide an explanation of how your program works. It is not mandatory, but I strongly advise it.
All standard loopholes are strictly forbidden.

Test Cases
These are constantly changing, so edit this post if these become out-of-date.
'how to'
  => 'how to make slime'
'code golf'
  => 'code golf languages'
'you'
  => 'youtube'
'g'
  => 'google' (why would you google 'google'?)

This is code-golf, so may the shortest code win and the best programmer prosper...

I would standardise a client name, to make it fair

Why the strict URL? As long as suggestqueries.google.com is used, without any URL shorteners, I don't see any problems.

In particular, if we can use output=toolbar, we don't have to specify a client at all.

I don't think the strict url should be enforced. Banning URL shorteners should do the trick already.

Somewhat related (both involve parsing downloaded JSON objects)

Nevermind, output=toolbar generates XML, the OP's URL doesn't.

@Dennis I did that because it was suggested that I have a standard URL for everyone to use (by @Riker).

Well, I don't think it's a good idea. If a language can handle XML easier, why not let it use output=toolbar instead? There are other output methods that might also be interesting.

@Dennis Ok. I will change it where people will only have to use any URL from suggestqueries.google.com/complete/search.

@Dennis Done! Now only requires that the URL http://suggestqueries.google.com/complete/search be used.

@ckjbgames Why use suggestqueries? https://www.google.com/complete is working fine for me, too.

@mınxomaτ It gives me a 404 Error when I try, but I'm glad it works for you.

@ckjbgames Example: https://www.google.com/complete/search?client=hp&q=a. I'm just saying requiring that subdomain is not required.

@mınxomaτ Oh. It does work. Cool!

@mınxomaτ but why not https -> http (save 1 byte), remove www. (save 4 bytes), google.com -> google.us (save 1 byte) or even google.com -> g.cn (save 6 bytes; i'm not sure why this still works, but it seems that it still working in 20170424)

Aren't search suggestions different for different users and regions?  I don't think having standard test cases really works for this.

Zsh + coreutils + w3m, 88 71 68 bytes
echo `w3m "google.com/complete/search?client=gma&q=$*"|cut -d\" -f4`

Switching from Bash to Zsh saved 3 bytes.
Thanks to @FatalMerlin for the shorter URL, saving 17 bytes!
Sample run
$ zsh complete.sh how to
how to make slime
$ zsh complete.sh dont you
don't you forget about me
$ zsh complete.sh don\'t you
don't you worry child

Of all things, why is "make slime" the first suggestion? Just how many people are out there making slime as we speak?

No clue. It was how to raise your i.q. by eating gifted children for a while, so I'd consider this an improvement.

Dang, I do love w3m. It lets me browse without distractions and it's just pretty cool altogether.

@MistahFiggins Blame Minecraft for that one.

@MistahFiggins Maybe they all just want to make(1) slime.

@Dennis It's a book

You stand victorious.

Vim 8 + unimpaired.vim, 93 89 85 70 73 71 bytes

-4 bytes thanks to tsh
-2 bytes thanks to Ian Emnace
-2 bytes thanks to FatalMerlin
-1 byte thanks to tsh/ckjbgames

:s/ /+/g
D:e http://google.us/complete/search?client=gma&q="
d3f";D]yy

As a bonus, the last bytes look like they're winking at you ;D Since this contains non-printing characters, the explanation contains substitutions (and I've replaced the pre-querystring part of the url with [url], for brevity):
:s/ /+/g<CR>D:e [url]?client=gma&q=<C-R>"<CR>d3f";D]yy
:s/ /+/g<CR>                                           " Replace spaces with +
            D                                          " Delete and yank result
             :e                                        " Type :e ('edit' command) and a space
                [url]?client=gma&q=                    " Type the url, except the query
                                   <C-R>"              " Paste from the default register
                                         <CR>          " Execute the command, which opens the response
                                                       "   in a new buffer
                                             d3f"      " Delete through the first three quotation marks
                                                       "   This deletes everything before the suggestion
                                                 ;     " Repeat motion; this jumps to the next \"
                                                  D    " Delete everything from there, leaving only the suggestion
                                                   ]yy " unimpaired.vim C string unescape to handle escaped '

As far as running goes, it works fine if you save it to a file named script and run with vim -s script input.txt on macOS, at least. It doesn't work if you add -u NONE, but it works fine if my .vimrc is empty. I assume it is using something from the system .vimrc to make the URL stuff work. This means, however, that it doesn't work in V, so no TIO link.
Some more test cases:
'what' => 'whataburger'
'what ' => 'what time is it' (Seriously? People Google that?)

What I really need is a way to open a URL with spaces in it. Replacing them with + first is just too many bytes!

should space be replaced by plus sign+?

@tsh You're right! Now somebody tell me how I can save 2 bytes and beat Dennis :)

for netrw to work you need filetype plugin on

which is set by default in vim 8 so I guess you can say that's your language

@tbodt So why is it not set when I use -u NONE, I wonder?

oh it's because -u NONE disables plugins whereas -u NORC just disables vimrc

@tbodt On my machine, at least, it still fails with -u NORC. I checked the system vimrc and don't see any filetype commands. In fact, it even fails with touch tmp.vim; vi -u tmp.vim -s script tmp.txt.

You can paste the " register (default) in insert/command mode by doing ". You can shave off a few bytes by doing :r [url]?client=opera&q=^R" instead of q:ir [url]?client=opera&q=<esc>p. ^R is the actual byte sent when you press , not the keys ^ and R together, so it only counts as one byte.

When I count the bytes I get 88. Also you can save bytes by changing the URL to http://google.com/complete/search?client=hp&q=your_query (client=gma => Plain JSON and shorter text.).

@FatalMerlin I think that's because the escape character was lost in translation.

@FatalMerlin But you're right about gma. hp gives me some annoying unicode-escaped html tags in the output that I can't get rid of without wasting bytes.

@BrianMcCutchon ah okay, I forgot about those :) But than I'm glad that at least one thing is useful!

@IanEmnace Thank you! I forgot you could do that in command mode.

You need to save 3 bytes if you want to outgolf him again.

@ckjbgames The substitution is too verbose and I can't get rid of the protocol. Plus, I think I need to add a few bytes to handle hyphens correctly (]yy with the tpope/unimpaired plugin).

@BrianMcCutchon Yeah. Dennis will outgolf you in the end, though.

Check out the comments on this post: You could shorten the URL to http://g.cn/complete/search?client=gma&q=.

@ckjbgames I get some HTML containing 301 Moved. That said, google.us works.

@BrianMcCutchon Cool. For me, it redirects to google.cn.

Python + requests 121 117 103 bytes
from requests import*
lambda s:get("http://google.com/complete/search?client=gma&q="+s).json()[1][0][0]

JavaScript, 109 Bytes
q=>fetch("//suggestqueries.google.com/complete/search?client=chrome&q="+q).then(r=>r.json()).then(r=>r[1][0])

Promise, you gotta love it, but man is it verbose! This answer uses fetch(), a promise-based fetch API present in modern browsers. Promises work by establishing handlers for async actions at the beginning, like callbacks, but better. The .then() takes a function which will be called with the result of the async action. .then(r=>r.json()) uses the .json() response method to convert the text array to a manipulable variable, the second .then() just pulls the first response.
Usage:
S = q=>fetch("//suggestqueries.google.com/complete/search?client=chrome&q="+q).then(r=>r.json()).then(r=>r[1][0])

S("node.js").then(console.log); // Prints the result to the debug console

.then(r=>r.json()).then(r=>r[1][0]) -> .then(r=>r.json()[1][0]) Enjoy 11 characters less ;-)

I've tried in Firefox 52 and Chrome 57, on this page, Google's homepage, and about:blank, and I just keep getting CORS errors. Have you gotten it to work successfully?

@ETHproductions Yes, there are CORS problems, you must execute on the domain https://suggestqueries.google.com

@StephanBijzitter .json() returns a Promise, it's async, for some reason

Indeed it works there, thanks!

Oh, you're completely right! I never even noticed ;O

Promise's verbosity isn't the problem, it's fetch. I'd really love to know why .json() is async.

OIC. Because fetch() returns before the body has necessarily even been fully received.

PowerShell, 133 115 bytes
([net.webclient]::new().downloadstring("http://google.com/complete/search?client=gma&q=$_")|convertfrom-json)[1][0]

Sample run
Windows CMD command line:
powershell.exe -c "'code golf l'|%{([net.webclient]::new().downloadstring(""""http://google.com/complete/search?client=gma&q=$_"""")|convertfrom-json)[1][0]}"

PowerShell console:
'code golf l'|%{([net.webclient]::new().downloadstring("http://google.com/complete/search?client=gma&q=$_")|convertfrom-json)[1][0]}

C#, 192 112 111 Bytes
Saved 80 Bytes thanks to @TheLethalCoder. Thanks for reformatting my code, I didn't know it was allowed to just leave off the surrounding Class and Method Body :)
Saved another Byte by replacing gma by hp, as it doesn't matter for the parsing and there is just some gibberish before the response body.
I litterally brute-forced the API to find gma and hp.

s=>new System.Net.WebClient().DownloadString("http://google.com/complete/search?client=hp&q="+s).Split('"')[3];

Groovy, 122 bytes
{Eval.me(new URL("http://suggestqueries.google.com/complete/search?client=chrome&q="+it).text.split(",\\{")[0]+"]")[1][0]}

Basically:

Get the text from the end-point.

Remove the part with the brackets at the end, this isn't valid syntax.

Parse the remaining bit as a groovy array.

Grab the second element of the result array.

R, 111 bytes
Long time since I last came here but giving it a shot:
jsonlite::fromJSON(readLines(url(paste0("http://google.com/complete/search?client=gma&q=",scan(,"")))))[[2]][1]

Using the package jsonlite to convert the string fetched from readLines() into a list object.
Subsequently extract the second element, e.g (gives a warning that we don't have to care about):
> jsonlite::fromJSON(readLines(url(paste0("http://google.com/complete/search?client=gma&q=",scan(,"")))))[[2]][1]
1: "how to"
2:
    Read 1 item
[[1]]
[1] "how to make slime"

Warning message:
    In readLines(url(paste0("http://google.com/complete/search?client=gma&q=",  :
                                incomplete final line found on 'http://google.com/complete/search?client=gma&q=how to'

C#, 127 bytes
s=>new System.Net.WebClient().DownloadString("http://suggestqueries.google.com/complete/search?client=gma&q="+s).Split('"')[3];

Complete and formatted version:
static void Main()
{
    System.Func<string, string> f = s =>
        new System.Net.WebClient()
                      .DownloadString("http://suggestqueries.google.com/complete/search?client=gma&q="+s)
                      .Split('"')[3];

    System.Console.WriteLine(f("you"));
    System.Console.ReadLine();
}

Thanks for the hint about leaving of the Method and Class Body!


text:
Tips for golfing in SOGL
Do you have any code-golf tips for writing in SOGL, a golfing language created by  dzaima?
Your tips should be at least somewhat specific to SOGL.
Please post one tip per answer.

@Soyoucanreplytomeincomments, tips questions are actually on topic here (see all the others under the tag).

Use the compression creator
Here is a new, buggy but mostly working online JavaScript compression creator. There, in each line enter a part of the string on each line which closest matches one of:

custom dictionary string - this will find the different characters used in the part, store them and store a number in the base of the amount of characters. This is effective for strings like niooaaoasoioaiaaaoiineeaei where there aren't a lot of different characters. It also works well for just a single character repeated. This has a limit of 98+(different characters used), and the compressor (currently) doesn't auto-split those.
boxstrings - strings with only the characters /\|_- and \n. Practically the same as custom dictionary strings, but more efficient. Note that this is chooses whether to use / and \ with the same bit, so then custom strings will be used. This has a limit the same as custom dictionary strings.
english - this has two word dictionaries, one of length 256 and another of ±65500. This only contains lowercase words and automatically adds spaces between words. To get something like spaceface do two parts of space and face. Each english part has a max of 4 words. If a 4-word part is followed by more english, it adds a space between. Trough the compressor will automatically split the input for you.
Note: the dictionary contains only lowercase versions of strings (except I, I've, and a couple others), so you must correctly case if after usage (using the characters ⁽ - uppercase 1st letter, ⁾ - sentence-case, ū - every words 1st letter).
ascii - Plain ascii - each part is 1-18 long (trough 1 and 2 are done differently) and auto-splits for you. Approx. 87% compression ratio.

Other stuff:

It's always useful to try different combinations and see which is smaller. At the end, it gives you the original and ending byte count and compression ratio. This might be automated sometime in the future.
For example, -_-_\_/_-       is shorter than
-_-_\_/_- and
  as different parts

An example input would be
row
,
row
,
row your boat
,¶"

, which outputs "π¾⌡īk#S)G⁶⁷λ7&[¶⁶āΡn‘, after which I can put uppercase 1st letter and remove the starting quote and get π¾⌡īk#S)G⁶⁷λ7&[¶⁶āΡn‘⁽ for Row, row, row your boat,\n"

I recognise niooaaoasoioaiaaaoiineeaei was that my magic string from The Alphabet song?

Yep :D (message requires 15 characters)

Can you put this on OpenProcessing ty

@ASCII-only there you go. Not on OpenProcessing because it'd have taken me more time to get it there (and even more to update it) and ugly but It took me 4 hours to get it to work with processing.js so I'm happy

Remove unnecessary quotes and brackets
You can remove quotes if the string they're encasing is either at the beggining of the program, or right after another string. For example, "hello”"world” can be shortened to hello”world”. This works for all types of quotes, mixed or not.
Similarly this works with brackets. No need to write } after {, ?, nor any of []F∫‽⌠. You can also ommit a starting { if there exists and ending }


text:
Reverse and add degeneracy
Intro
Reverse and add is as simple as it sounds, take n and add it to its digits in reverse order. (e.g. 234 + 432 = 666).
If you apply this process repeatedly some numbers will eventually hit a prime number, and some will never reach a prime.
Example
I currently have
11431 rep.
11431 is not prime
11431 + 13411 = 24842 which is not prime
24842 + 24842 = 49684 which is not prime
49684 + 48694 = 98378 which is not prime
98378 + 87389 = 185767 which is prime!

This number hits a prime
In contrast any multiple of 3 will never hit a prime, this is because the all multiples of 3 have a digit sum that is a multiple of 3 and vice versa.
Thus reverse and add on a multiple of 3 will always result in a new multiple of 3 and thus never a prime.
Task
Take a positive integer n and determine if repeatedly reversing and adding will ever result in a prime number. Output a truthy or falsy value.  Either truthy for reaches a prime and falsy value for does not or the other way around both are acceptable.
Prime numbers will be considered to reach a prime number in zero iterations.
This is code-golf so try to make your code as short as possible.
Test Cases
True for reaches a prime false for never reaches a prime
11 -> True
11431 -> True
13201 -> True
13360 -> True
13450 -> True
1019410 -> True
1019510 -> True
22 -> False
1431 -> False
15621 -> False
14641 -> False

Hint
While I was writing this challenge I discovered a cool trick that makes this problem a good deal easier.  It is not impossible without this trick and it is not trivial with it either but it does help.  I had a lot of fun discovering this so I will leave it in a spoiler below.

 Repeated reverse and add will always hit a multiple of 11 in 6 iterations or less.  If it does not hit a prime before it hits a multiple of 11 it will never hit a prime.

I find it more of a mathematical problem than a coding one. I guess code problems have specific rules laid out which are implemented in the code by the answerer; I don't think that's the case with this challenge.

@DobbyTheFree-Elf I think the difference between this problem and typical "coding" problems is that often for the latter, the algorithm to be implemented is obvious and it is just a matter of doing it in as little code as possible.  This challenge forces you to come up with a algorithm from scratch.  Both pose their own unique puzzles but both are ultimately still coding problems.

I agree with that comment of yours, but in my opinion, coming up with such algorithm present in this challenge is more of a job of a mathematician than a programmer. I don't know what others think, but that's at least what I think. So, this has my downvote.

@DobbyTheFree-Elf I hate to break it to you but finding efficient algorithms to solve a problem in a crucial part of being a good programmer.

I agree with that too. But the algorithm for this challenge will have more mathematical value. One will have to find or create proven mathematical theorems to guarantee a correct output with every possible input, which in my opinion what mathematicians do. Common approaches like brute force etc will not work in this case.

And my second last comment said "such algorithm present in this challenge" not simply "algorithm". This justifies that I am not at all against the coming-up-with-algorithm-ic nature of this challenge. I just feel that the algorithm that the programmer needs to find for this challenge will require more of mathematical skills than programming or code-golfing ones.

Ruby, 84 79 77 74 bytes
->x{y=1;x+="#{x}".reverse.to_i while(2...x).any?{|z|0==y=x%z}&&x%11>0;y>0}

Try it online!

 If I got it right, when we reach a multiple of 11 we can stop (we will only get multiples of 11 after that)

There is something more powerful we can prove with the information in the spoiler.

Python 2, 123 110 bytes
Saved 13 bytes thanks to Ørjan Johansen and Wheat Wizard!

n=input()
while 1:
 if all(n%m for m in range(2,n)):print 1;break
 if n%11==0:print 0;break
 n+=int(`n`[::-1])

Returns 1 if it reaches a prime, 0 if it doesn't.
Try it online!

Haskell, 65 bytes
f takes an Integer and returns a Bool. True means it reaches a prime.
f n=gcd(product[2..n-1])n<2||gcd 33n<2&&f(n+read(reverse$show n))

Try it online!
Unfortunately the short but inefficient prime test means that the OP's True test cases other than 11 grow too big to finish. But for example 11432 is a True case that does finish.
You can also try this 3 bytes longer one, for which TIO can finish all the True test cases:
f n=and[mod n i>0|i<-[2..n-1]]||gcd 33n<2&&f(n+read(reverse$show n))

Try it online!
Both versions' prime tests break on 1, but it so happens that it gets to a prime (2) anyway.
Otherwise, I noticed about the same thing as G.B. in the spoiler of the Ruby submission:

 Once a number grows to even length, the next iteration will be divisible by 11. Once a number is divisible by 11, so will all following iterations.

@WheatWizard Well it implies that the number of iterations is bounded, with (sorry, no spoiler tags in comments) max 6 steps to check I think (e.g. 100 is maximal). Trying briefly, this doesn't seem to give me a shorter solution, though. Do you mean something more powerful than that?

No that was it 6 is the maximum

Python 2, 78 70 69 bytes
f=lambda x:all(x%a for a in range(2,x))or x%11and f(x+int(`x`[::-1]))

Try it online!
Explanation
This program relies on the fact that

 Every number that loss forever will reach a multiple of 11 in less than 6 moves

This program is a recursive lambda with circuited logical comparatives.  It first checks if n is prime.
all(x%a for a in range(2,x))

If this is true we return true.
If it is false we check if it is a multiple of 11.
x%11

If false we return false otherwise we return the result of f on the next iteration
f(x+int(`x`[::-1]))

Jelly, 11 bytes
ṚḌ$+$6Ð¡ÆPS

Try it online!

For the interest of anyone reading this answer, the last S could be a T as well. RD$+$ can also be +RD$$ or RD+<newline>Ç (all trivial modifications)

@HyperNeutrino I chose S because it has less of a chance of showing anything >1. There is no RD, just ṚḌ, and I chose ṚḌ$+$ so that I could organize it better.

I was too lazy to put in the dots; I know why you put S; I should have picked that over T, but that's mostly for everyone else's interest.

05AB1E, 14 13 bytes
EDIT: Saved one byte because input is reused if there aren't enough elements on the stack
[Dp#D11Ö#R+]p

Try it online!
Uses the hint in the question
How it works
[              # begin infinite loop
               # implicit input
 D             # duplicate input
  p            # push primality of input
   #           # if prime, break
    D          # duplicate input
     11        # push 11
       Ö       # push input % 11 == 0
        #      # if multiple of 11, break
               # implicit push input
          R    # reverse input
           +   # add both numbers
            ]  # end infinite loop
             p # push primality of result; 1 if prime, 0 if multiple of 11
               # implicit print

MATLAB, 88 81 bytes
function r=f(n);r=0;for i=1:7 r=r+isprime(n);n=n+str2num(fliplr(num2str(n)));end;

Microsoft Sql Server, 826 786* bytes
* I've recalled about the IIF function that was introduced in Microsoft Sql Server 2012
set nocount on
use rextester
go
if object_id('dbo.n','IF')is not null drop function dbo.n
go
create function dbo.n(@ bigint,@f bigint)returns table as return
with a as(select 0 c union all select 0),b as(select 0 c from a,a t),c as(select 0 c from b,b t),
d as(select 0 c from c,c t),e as(select 0 c from d,d t),f as(select 0 c from e,e t),
v as(select top(@f-@+1)0 c from f)select row_number()over(order by(select 0))+@-1 n from v
go
with u as(select cast(a as bigint)a from(values(11),(11431),(13201),(13360),(13450),(1019410),(1019510),(22),(1431),
(15621),(14641))u(a)),v as(select a,a c from u union all select a,c+reverse(str(c,38))from v
where 0=any(select c%n from dbo.n(2,c/2))and c%11>0)select a,iif(0=any(select max(c)%n from dbo.n(2,max(c)/2)),0,1)
from v group by a option(maxrecursion 0)

Check it online
The more neat formatting
SET NOCOUNT ON;
USE rextester;
GO
IF OBJECT_ID('dbo.n', 'IF') IS NOT NULL DROP FUNCTION dbo.n;
GO
CREATE FUNCTION dbo.n(@ BIGINT,@f BIGINT)RETURNS TABLE AS RETURN
  WITH
    a AS(SELECT 0 c UNION ALL SELECT 0),
    b AS(SELECT 0 c FROM a,a t),
    c AS(SELECT 0 c FROM b,b t),
    d AS(SELECT 0 c FROM c,c t),
    e AS(SELECT 0 c FROM d,d t),
    f AS(SELECT 0 c FROM e,e t),
    v AS(SELECT TOP(@f-@+1)0 c FROM f)
    SELECT ROW_NUMBER()OVER(ORDER BY(SELECT 0))+@-1 n FROM v;
GO
WITH u AS(
  SELECT CAST(a AS BIGINT) a
  FROM(VALUES (11), (11431), (13201), (13360), (13450), (1019410), (1019510),
              (22), (1431), (15621), (14641)) u(a)
),
v AS(
  SELECT a, a c FROM u
    UNION ALL
  SELECT a, c + reverse(str(c, 38))
  FROM v
  WHERE 0 = ANY(SELECT c % n FROM dbo.n(2, c / 2)) AND c % 11 > 0
)
SELECT a, IIF(0 = ANY(SELECT MAX(c) % n FROM dbo.n(2, MAX(c) / 2)), 0, 1)
FROM v
GROUP BY a
OPTION (MAXRECURSION 0);

Do you need the /*true*/ and /*false*/ comments?

No. It is the comments that used to separate the input data according to results expected.

Can you delete them?

Yes of course, the comments can be deleted.

You appear to have hard coded the inputs. I'm not too sure, but I think an acceptable input format is selecting them from a table instead

JavaScript (ES6), 73 bytes
Returns 0 or true.
f=n=>{for(d=n;n%--d;);return d<2||n%11&&f(+[...n+''].reverse().join``+n)}

Commented
This is based on the magic-spoiler formula described by Wheat Wizard.
f = n => {              // given n:
  for(d = n; n % --d;); // find the highest divisor d of n
  return                //
    d < 2 ||            // if this divisor is 1, return true (n is prime)
    n % 11 &&           // else: if 11 is a divisor of n, return 0
    f(                  // else: do a recursive call with
      +[...n + '']      // the digits of n
      .reverse().join`` // reversed, joined,
      + n               // coerced to a number and added to n
    )                   //
}                       //

Test cases
I've removed the two largest inputs from the snippet, as they take a few seconds to complete. (But they do work as well.)

f=n=>{for(d=n;n%--d;);return d<2||n%11&&f(+[...n+''].reverse().join``+n)}

console.log(f(11))      // -> True
console.log(f(11431))   // -> True
console.log(f(13201))   // -> True
console.log(f(13360))   // -> True
console.log(f(13450))   // -> True
console.log(f(22))      // -> False
console.log(f(1431))    // -> False
console.log(f(15621))   // -> False
console.log(f(14641))   // -> False

Mathematica, 45 bytes
Or@@PrimeQ@NestList[#+IntegerReverse@#&,#,6]&

Jelly, 9 bytes
ṚḌ+Ɗ6Ð¡ẒẸ

Try it online!
How it works
ṚḌ+Ɗ6Ð¡ẒẸ    Monadic main link.
ṚḌ+Ɗ         Monad: Reverse and add to original.
    6Ð¡      Repeatedly apply the above 6 times, collecting all iterations
       ẒẸ    Is any of them a prime?

PHP 114 bytes
<?php function f($n){$n1=strrev((string)$n);$r=$n+(int)$n1;for($i=2;$i<$r;$i++){if($r%$i==0){die('0');}}die('1');}

More readable version:
<?php function f($n)
{
    $n1 = strrev((string)$n);
    $r = $n + (int)$n1;
    for ($i = 2; $i < $r; $i++) {
        if ($r % $i == 0) {
            die('0');
        }
    }
    die('1');
}

f(11431 );

Try it online!
I used this thing for counting bytes.

Ah okay, it should terminate. I misunderstood the question then. Edited the question to terminate for false-y cases.

Now it always returns false unless the first reverse is a prime. You're also not checking the first case, where $n$ is a prime. And TIO has a byte counter for you... it even has an auto-formatter for the submission template that you can use

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
Challenge Similarity Detector
Challenge
Given two question IDs, try to figure out how similar they are by looking at the answers.
Details
You will be given two question IDs for codegolf.stackexchange.com; you may assume that there exist questions for both IDs that are not deleted, but are not necessarily open. You must run through all of the answers and determine the minimum Levenshtein distance between the code in the answers to the two questions (not including deleted answers). That is, you should compare every answer in question 1 to every answer in question 2, and determine the minimum Levenshtein distance. To find the code in an answer, assume the following procedure:
How to find the code snippet
A body of text is the answer's actual code if it is in backticks and is on its own line, or if it is indented with 4 spaces, with an empty line above it, unless there is no text above.
Examples of valid and not-valid code snippets (with . as a space) (separated by a ton of equal signs)
This is `not a valid code snippet because it is not on its own line`
========================================
This is:
`A valid code snippet`
========================================
This is
....not a valid code snippet because there's no spacing line above
========================================
This is

....A valid code snippet because there's a spacing line above
========================================
....Valid code snippet because there's no other text
========================================

If there are no valid code snippets in the answer, ignore the answer completely. Note that you should only take the first codeblock.
Final Specs
The two question IDs can be inputted in any reasonable format for 2 integers. The output should be the smallest Levenshtein distance between any two valid answers from either challenge. If there are no "valid" answers for one or both of the challenges, output -1.
Test Case
For challenge 115715 (Embedded Hexagons) and 116616 (Embedded Triangles) both by Comrade SparklePony, the two Charcoal answers (both by KritixiLithos) had a Levenshtein distance of 23, which was the smallest. Thus, your output for 115715, 116616 would be 23.
Edit
You may assume that the question has at most 100 answers because of an API pagesize restriction. You should not ignore backticks in code blocks, only if the code block itself is created using backticks and not on its own line.
Edit
I terminated the bounty period early because I made a request to a mod to get a one-week suspension and I didn't want the bounty to be automatically awarded to the highest scoring answer (which happens to be the longest). If a new submission comes in or a submission is golfed enough to become shorter than 532 bytes before the actual end of the bounty period (UTC 00:00 on Jun 1), I will give that a bounty to stay true to my promise, after the suspension expires. If I remember correctly, I need to double the bounty period next time so if you do get an answer in, you might get +200 :)

I'm confused by what counts as a valid code snippet. Why not just whatever's in  tags in the html?

@HelkaHomba What about the newline restrictions? I could try to find another way to incorporate those.

@HelkaHomba Essentially, if the answer contains backtick-delimited code within a line, it should be ignored.

This is one of those answers, where it's easier to do the main part of the question. Downloading the page and extracting the code blocks is harder than doing the levenshtein distance.

@Bálint I'm not quite sure I agree with you on what the main part of the question is. I don't think the main part is the levenshtein distance, because most languages have a built-in for that which I did not and will not disallow. I think that the main part of the challenge is to get the answers, find the code blocks, and iterate through them, which, as you said, is the harder part of the challenge, also being the "main part" in my opinion.

I am not clear on part of the capturing code blocks part. So on this q the JS answer has backticks in the code to that can be ignored yes? The JS code has large amounts of whitespace in it as well. For the haskell answer I should have to match the whole code block even though it is on more than one line? Wanted to know for sure how to deal with multiline code block answers. FYI since I use PowerShell I spent a bit rolling my own LD function since PowerShell does not have one. That part was fun though.

@Matt The backticks should not be ignored. It's only if the code formatting is caused by backticks should you ignore the codeblock. You need to match the whole Haskell answer's code block because it is a proper codeblock.

Cool. Just checking.

Is there any special rules for questions that have more than 100 answers? Are we always expected to check all answers of all questions ids passed? Guaranteed perhaps to have question under a certain threshold?

@Matt Just wondering, how does having >100 answers change anything?

For me I am using the StackExchange API to query answers and their content. The max pagesize is 100, default being 30. So if there are more that 100 I need to send a query again with another page. If I don't use the API it gets even harder.

@Matt Then I will say you can assume the question has at most 100 answers; I did not know about that. Thanks!

Here is a relevant reference to the docs https://api.stackexchange.com/docs/paging

My LD calculations might be flawed. Is there an online resource you are using for LD values couple I found hate unicode? I knew nothing about LD until I started looking at this challenge. Does yours use deletions, substitutions and transpositions? I don't think mine does the latter so I got 23.

@Matt What are transpositions? I believe mine only uses deletions, substitutions, and insertions.

Mine supports those as well. I read a discussion for on online calculator that could have supported swapping  neighboring character positions. Your LD was lower in your example so I was curious. I made my function based on this page. It worked fine for the other examples online I found so I had assumed I got that part of the challenge done. That is why I wanted to know what you did to get yours.

I got 23 for these ＦＮ«ＡＸ²ιβ×__β↓↘β←↙β↑←×__β↖β→↗β
to ＮαＷα«Ｘ²ι↙ＡＸ²⁻ι¹β↙β↑↖β→Ａ⁻α¹α. Sorry for all the comments.

hm... should I write another java beast?

@tuskiomi If nobody else answers I really have no choice but to give it to you as long as it's an actualy answer ;P So go ahead :P

@Matt I don't know what I was doing. You're right; it is 23. Sorry for the confusion. :P Thanks for catching that; I've updated.

I'm really hoping you will expand more on what a valid code block is for the purposes of this challenge. Take for example Q97752 and the last answer in Python 2.7. I see a valid code block 7 lines long. Each line is indented, but that doesn't seem to meet your criteria? I also see you've answered this question for Matt. please add more to the body of the OP. It really is not very clear. Especially the sentence which begins, "A body of text is the answer's actual code...". To me, the body of text is much more than the code. Can you please clarify for us all.

@Octopus How is it invalid? The answer meets my criteria as it has an empty line above it and no text below it. I will add my comments into the question.

PowerShell, 532 Bytes
$1,$2=$args
$a={irm "api.stackexchange.com/2.2/questions/$args/answers?pagesize=100&site=codegolf&filter=!9YdnSMKKT"|% i*}
$r={$args.body-replace"(?sm).*?^(
)?(.*?).*",'$2'}
$1=&$a $1;$2=&$a $2
(0..($1.count-1)|%{
    $c=&$r $1[$_]
    0..($2.count-1)|%{
        &{$c,$d=$args;$e,$f=$c,$d|% le*;$m=[object[,]]::new($f+1,$e+1);0..$e|%{$m[0,$_]=$_};0..$f|%{$m[$_,0]=$_};1..$e|%{$i=$_;1..$f|%{$m[$_,$i]=(($m[($_-1),$i]+1),($m[$_,($i-1)]+1),($m[($_-1),($i-1)]+((1,0)[($c[($i-1)]-eq$d[($_-1)])]))|sort)[0]}};$m[$f,$e]} $c $d
    }
}|sort)[0]

I left newlines in there for some readability. The are still reflected in my byte count.
Pretty sure I have a handle on this. The tough part for me was actually getting the Levenshtein distance since PowerShell does not have a builtin for that as far as I know. Because of that I was able to answer the related challenge on Levenshtein distance. When my code refers to an anonymous function for LD you can refer to that answer for a more detailed explanation as to how that works.
Code with comments and progress indicator
The code can get real slow (because of the LD) so I built in some progress indicators for myself so I could follow the action as it unfolded and not assume it was stuck in a loop somewhere. The code for monitoring progress is not in the top block nor counted in my byte count.
# Assign the two integers into two variables.
$1,$2=$args

# Quick function to download up to 100 of the answer object to a given question using the SE API
$a={irm "api.stackexchange.com/2.2/questions/$args/answers?pagesize=100&site=codegolf&filter=!9YdnSMKKT"|% i*}

# Quick function that takes the body (as HTML) of an answer and parses out the likely codeblock from it.
$r={$args.body-replace"(?sm).*?^(
)?(.*?).*",'$2'}

# Get the array of answers from the two questions linked.
$1=&$a $1;$2=&$a $2

# Hash table of parameters used for Write-Progress
# LD calcuations can be really slow on larger strings so I used this for testing so I knew
# how much longer I needed to wait.
$parentProgressParameters = @{
    ID = 1
    Activity = "Get LD of all questions"
    Status = "Counting poppy seeds on the bagel"
}

$childProgressParameters = @{
    ID = 2
    ParentID = 1
    Status = "Progress"
}

# Cycle each code block from each answer against each answer in the other question.
(0..($1.count-1)|%{
    # Get the code block from this answer
    $c=&$r $1[$_]

    # Next line just for displaying progress. Not part of code.
    Write-Progress @parentProgressParameters -PercentComplete (($_+1) / $1.count * 100) -CurrentOperation "Answer $($_+1) from question 1"

    0..($2.count-1)|%{
        # Get the code block from this answer
        $d=&$r $2[$_]

        # Next two lines are for progress display. Not part of code.
        $childProgressParameters.Activity = "Comparing answer $($_+1) of $($2.count)"
        Write-Progress @childProgressParameters -PercentComplete (($_+1) / $2.count * 100) -CurrentOperation "Answer $($_+1) from question 2"

        # Anonymous function to calculate Levenstien Distance
        # Get a better look at that function here: https://codegolf.stackexchange.com/a/123389/52023
        &{$c,$d=$args;$e,$f=$c,$d|% le*;$m=[object[,]]::new($f+1,$e+1);0..$e|%{$m[0,$_]=$_};0..$f|%{$m[$_,0]=$_};1..$e|%{$i=$_;1..$f|%{$m[$_,$i]=(($m[($_-1),$i]+1),($m[$_,($i-1)]+1),($m[($_-1),($i-1)]+((1,0)[($c[($i-1)]-eq$d[($_-1)])]))|sort)[0]}};$m[$f,$e]} $c $d
    }
# Collect results and sort leaving the smallest number on top.
}|sort)[0]

My logic for finding the code blocks is to take answer as HTML and look for a code tag set, optionally surrounded by a pre tag set that starts on its own line. In testing it found all the correct data on 6 different question sets.
I tried to work from the markdown code but it was too difficult to find the right code block.
Sample runs
Challenge-Similarity-Detector 97752 122740
57

Challenge-Similarity-Detector 115715 116616
23

I have spent the better part of 3 days looking into this. This challenge is in my top 5 for most fun attempting. TFTC(Thanks for the challange)

Nice job! Thanks, I'm glad you enjoyed it! :)

Note: I awarded the bounty earlier than stated because I am requesting a suspension so I cannot award it any later. Good job! :)

Requesting a suspension?

Yes, I asked Dennis to give me a 1-week suspension so I can focus on schoolwork. It's been done before (though I'm still here... I don't know when I'll disappear).

Java + Jsoup, 1027 bytes
The first two arguments are the question IDs.
Golfed:
import org.jsoup.*;import org.jsoup.nodes.*;class M{String a1[]=new String[100],a2[]=new String[100],c[];int i1=0,i2=0;public static void main(String a[])throws Exception{String r="https://codegolf.stackexchange.com/questions/";M m=new M();m.c=m.a1;m.r(Jsoup.connect(r+a[0]).get());m.c=m.a2;m.r(Jsoup.connect(r+a[1]).get());int s=m.ld(m.a1[1],m.a2[1]);for(int i=2;i<m.a1.length;i++)for(int j=2;j<m.a2.length;i++){if(m.a1[i]==null)break;int d=m.ld(m.a1[i],m.a2[j]);if(d<s)s=d;}System.out.print(s);}void r(Document d){a:for(Element e:d.select("td")){for(Element p:e.select("pre")){ a(p.select("code").get(0).html());continue a;}}}void a(String d){c[c==a1?i1++:i2++]=d;}int ld(String a,String b){a=a.toLowerCase();b=b.toLowerCase();int[]costs=new int[b.length()+1];for(int j=0;j<costs.length;j++)costs[j]=j;for(int i=1;i<=a.length();i++){costs[0]=i;int nw=i-1;for(int j=1;j<=b.length();j++){int cj=Math.min(1+Math.min(costs[j],costs[j-1]),a.charAt(i-1)==b.charAt(j-1)?nw:nw+1);nw=costs[j];costs[j]=cj;}}return costs[b.length()];}}

Readable:
import org.jsoup.*;import org.jsoup.nodes.*;

class M {
    String a1[]=new String[100],a2[]=new String[100],c[];
    int i1=0,i2=0;
    public static void main(String a[])throws Exception{
    String r="https://codegolf.stackexchange.com/questions/";
    M m=new M();

    m.c=m.a1;
    m.r(Jsoup.connect(r+a[0]).get());
    m.c=m.a2;
    m.r(Jsoup.connect(r+a[1]).get());

    int s=m.ld(m.a1[1],m.a2[1]);
    for(int i=2;i<m.a1.length;i++)for(int j=2;j<m.a2.length;i++){if(m.a1[i]==null)break;int d=m.ld(m.a1[i],m.a2[j]);if(d<s)s=d;}
    System.out.print(s);
}

void r(Document d) {
    a:for(Element e:d.select("td")) {for(Element p:e.select("pre")) {
        a(p.select("code").get(0).html());
        continue a;
    }}
}

void a(String d){c[c==a1?i1++:i2++]=d;}

int ld(String a, String b) {
    a = a.toLowerCase();
    b = b.toLowerCase();
    int [] costs = new int [b.length() + 1];
    for (int j = 0; j < costs.length; j++)costs[j] = j;
    for (int i = 1; i <= a.length(); i++) {
        costs[0] = i;
        int nw = i - 1;
        for (int j = 1; j <= b.length(); j++) {
            int cj = Math.min(1 + Math.min(costs[j], costs[j - 1]), a.charAt(i - 1) == b.charAt(j - 1) ? nw : nw + 1);
            nw = costs[j];
            costs[j] = cj;
        }
    }
    return costs[b.length()];
}

}

beat me to it!!!! Nice!

Welcome to PPCG! It's not against the rules to use a third-party library, but we require that the use of the library is noted with the language (so a Java answer that uses a library called JavaHTML would be labelled "Java + JavaHTML").

Ok, thanks! I'll keep that in mind for next time!

There is nothing stopping you from using a library in this challenge if you wanted to.

I might have to now that somebody has topped my answer!

1709 bytes is huge for code golf entries. Take a peek at some of the other questions and their answers. 99% can be done in under 20 characters (for some languages) with answers in general edging in on 0 characters (some puzzles and some languages this is actually possible). Average I'd say is around 9 to 20 bytes for a golfing language (Java is not a golfing language). E.g. Jelly. The longest answer I've seen in Jelly has been in the neighborhood of 75 bytes.

It seemed like a good idea at the time when nobody else had answered. I may look into a golfing language such as Jelly in the future.

Mathematica, 540 bytes
f=Flatten;l=Length;P=StringPosition;(H[r_]:=Block[{s,a,t,k},t={};d=1;k="https://codegolf.stackexchange.com/questions/"<>r;s=First/@P[Import[k,"Text"],"
"];a=f[First/@P[Import[k,"Text"],"answerCount"]][[1]];While[d<l@s,If[s[[d]]>a,AppendTo[t,s[[d]]]];d++];Table[StringDelete[StringCases[StringTake[Import[k,"Text"],{t[[i]],t[[i]]+200}],"
"~~__~~"
"],{"
","
"}],{i, l@t}]];Min@DeleteCases[f@Table[EditDistance[ToString@Row@H[#1][[i]],ToString@Row@H[#2][[j]]],{i,l@H[#1]},{j,l@H[#1]}],0])&

input

["115715", "116616"]

output

23

uses built-in EditDistance which "gives the edit or Levenshtein distance between strings or vectors u and v."
As for the test case mathematica
EditDistance["ＦＮ«ＡＸ²ιβ×__β↓↘β←↙β↑←×__β↖β→↗β","ＮαＷα«Ｘ²ι↙ＡＸ²⁻ι¹β↙β↑↖β→Ａ⁻α¹α"]

returns 23
I guess I can golf it a bit more
Takes some minutes to run


text:
Backwards and forwards polyglot quine!
You must make a polyglot that outputs its source code in one language and its source code backward in another. Unlike the normal rules, you are allowed to read the current file or use a builtin to get the source code of your submission and reverse that in one language. Your source code cannot be a palindrome.
For example, if your source code is abcxyz, it must output abcxyz in one language and zyxcba in another. If your code is abcxyzyxbca, it's invalid because it's a palindrome.
Good luck!

Normal rules are there for a reason. Allowing quine built-ins will likely make this challenge too broad, and allowing palindrome source codes allows answers which are forward quines for both languages.

@EriktheOutgolfer palindromes are now not allowed.

Palindromes are not allowed What does that mean? Are you trying to forbid built-in functions that reverse their input, maybe?

@LuisMendo No I suggested that if palindromes are allowed then a forward quine+forward quine polyglot could be a valid answer (while not being the intention). Reverse functions aren't banned.

@EriktheOutgolfer Ah, so the source code cannot be a palindrome?

@programmer5000 Well, I don't think it's too broad anymore.

@LuisMendo Yeah, I'll clarify and add an example in there.

@programmer5000 Are different versions of a language considered the same language or not?

@LuisMendo you are correct.

@ErikTheOutgolfer different versions of the same language are allowed.

I think you should offer a bounty for the first person to complete this challenge without breaking any of the normal quine rules. (maybe 50 rep?)

@Qwerp-Derp good idea. Maybe.

I read "in one language" as clearly disallowing the case where both languages read the source code, but the current top-voted answer does exactly that. Can you edit to make it clear whether that's meant to be allowed?

PHP & GolfScript, 2 bytes

1

i.e. a newline and the digit 1.
This is a reverse quine in GolfScript, contributed on this site by Justin. PHP hasn't triggered that it's a programming language so it prints its input.

Batch / bash + tac, 39 bytes
:;tac -r -s '.\|'$'\n' $0;exit
@type %0

Outputs forwards in Batch. Explanation: Batch sees the first line as a label and ignores it, while the second line simply copies the source file to STDOUT. (Note that you need to invoke the file including extension, or change %0 to %~f0.) bash sees four commands:

: does nothing (same as true)
tac -r -s '.\|'$'\n' $0

-r puts tac into regex mode
-s specifies a regex
'.\|'$'\n' is the regex, composed of

. any character except newline
\| or
$'\n' a newline

The upshot is that tac splits the file into characters rather than lines.

exit stops the script, ignoring the fourth command
@type %0 (ignored)

I think that you can replace the first line with :;rev $0|tac;exit. Also, the header should say Batch / sh + util-linux + coreutils instead.

@EriktheOutgolfer $'\n' is a Bashism, rev $0|tac doesn't reverse newlines correctly, and does it really matter that tac comes in a package?

$'\n' doesn't exist in the replacement I've suggested, and rev $0|tac works for me. And I think it's better to specify the packages instead of the individual utilities, because sometimes confusion might arise (e.g. which package's tac?).

@EriktheOutgolfer Try it online! is wrong. So is Try it online! (but more subtly).

Could you please give an explanation?

@Neil Oh I see, I was tricked by a trailing newline.

@programmer5000 Something like that?

Python 2 / Python 3, 71 bytes
lambda _='lambda _=%r:(_%%_)[::int(1-(1/2)*4)]':(_%_)[::int(1-(1/2)*4)]

Does not use any quine builtins.
Thanks to ovs for generally awakening me.

lambda _='lambda _=%r:(_%%_)[::int(1-(1/2)*4)]':(_%_)[::int(1-(1/2)*4)] for 71 bytes

@ovs Oh of course, how I didn't think of that.

JS (ES5), JS (ES6), 94 bytes
function f(){try{eval("x=(f+'f()').split``.reverse().join``")}catch(e){x=f+"f()"};return x}f()

Does not use any quine built-ins. Just uses the fact that JS functions stringify to their code. Probably can be golfed more.

PHP & Retina, 2 bytes

1

The same as Gille's PHP & GolfScript answer.
PHP just reads the code and outputs it directly, Retina will replace matches of an empty string in the input and replace it with 1, and output that with a newline.

If you allow reading the source code, it isn't really a quine.
PHP & sh+util-linux, 6 bytes
rev $0

I'm sure that the usual golfing languages can do it in 2 bytes.

They infact can.